androidgetcount
1. Android中怎麼排序日期和時間
時間排序,方法很多,以下提供幾種常用的方法。
轉化成long類型進行對比。
通過Collections.sort()方法進行排序。
【原理】
主要是通過把時間轉化成一些可以對比的數據類型進行排序對比。
【詳細方式或原理】
轉化成long類型進行對比
轉化代碼:
java">StringsDt="08/31/200621:08:00";
SimpleDateFormatsdf=newSimpleDateFormat("MM/dd/yyyyHH:mm:ss");
Datedt2=sdf.parse(sDt);
//繼續轉換得到秒數的long型
longlTime=dt2.getTime()/1000;
把需要對比的時間轉化成long類型進行對比。
2.通過Collections.sort()方法進行排序
Collections.sort()是java提供的官方排序方式。適合多類型排序。
詳細的對比代碼如下:
一般情況下要重寫下Comparator 介面。
importjava.util.Comparator;
{
@Override
publicintcompare(Objectlhs,Objectrhs){
//時間對比
numa=(num)lhs;
numb=(num)rhs;
return(b.getCount()-a.getCount());
}
}
然後在排序的地方進行使用
Comparatorcomp=newSortComparator();
Collections.sort(list,comp);
【最後】
如果數據類型復雜推薦使用方法二,如果類型簡單推薦使用方法一。
2. android中怎麼讓listview的內容全部顯示出來
注意,如果listitem裡面有textview的話,就當一行處理進行截取數字。
public static void (ListView listView) {
// 獲取ListView對應的Adapter WeiboContentAdapter listAdapter = (WeiboContentAdapter) listView.getAdapter(); if (listAdapter == null) { return; } Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setTextAlign(Align.LEFT); LinearLayout listItem; TextView tvContent; int totalHeight = 0; int lineCount = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回數據項的數目 listItem = (LinearLayout)listAdapter.getView(i, null, listView); tvContent = (TextView) listItem.findViewById(R.id.tv_weibo_detail_content); lineCount = getLineCount(mPaint, ((SpannedString) tvContent.getText()).toString()); tvContent.measure(0, 0); // 計運算元項View 的寬高 totalHeight += tvContent.getMeasuredHeight()*lineCount + 60; // 統計所有子項的總高度 } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)) ; // listView.getDividerHeight()獲取子項間分隔符佔用的高度 // params.height最後得到整個ListView完整顯示需要的高度 listView.setLayoutParams(params); }
private static int getLineCount(Paint mPaint, String content) { int index; int count = 0; while(content.length() > 0){ index = mPaint.breakText(content, true, ResolutionUtil.getWPx()/2, null); content = content.substring(index); count++; } return count; }
/** * 動態改變listView的高度 * @param pull */ private void setPullLvHeight(ListView pull){ int totalHeight = 0; for (int i = 0, len = adapter.getCount(); i < len; i++) { //listAdapter.getCount()返回數據項的數目 View listItem = adapter.getView(i, null, pull); listItem.measure(0, 0); //計運算元項View 的寬高 totalHeight += listItem.getMeasuredHeight(); //統計所有子項的總高度 } ViewGroup.LayoutParams params = pull.getLayoutParams(); params.height = totalHeight + (pull.getDividerHeight() * (pull.getCount() - 1)); pull.setLayoutParams(params); }
3. Android Cursor(游標)解析
SQLiteDatabase db = dataBaseHelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select *from User",null);
1.游標的行數:int getCount()
2.當前游標的位置:int getPosition()
返回的值從零開始, 當第一次返回行集時游標將位於位置 -1,即第一行之前。在返回最後一行之後,對 next() 的另一個調用將使游標離開最後一個條目,位於 count() 的位置。
3.從當前位置應用的偏移量:boolean move(int offset)
將游標從當前位置向前或向後移動一個相對量。 正偏移向前移動,負偏移向後移動。 如果最終位置在結果集的邊界之外,則結果位置將分別固定為 -1 或 count(),具體取決於該值是在集合的前端還是末尾。如果請求的目的地可達,此方法將返回 true,否則返回 false。
4.將游標移動到絕對位置:boolean moveToPosition(int position)
值的有效范圍是 -1 <= 位置 <= 計數。如果請求目的地可達,此方法將返回 true,否則返回 false。
5.將游標移動到第一行:boolean moveToFirst()
6.將游標移動到最後一行:boolean moveToLast()
7.將游標移動到下一行:boolean moveToNext()
8.將游標移動到上一行:boolean moveToPrevious()
9.返回遊標是否指向第一行:boolean isFirst()
10.返回遊標是否指向最後一行:boolean isLast()
11.返回遊標是否指向第一行之前的位置:boolean isBeforeFirst()
12.返回遊標是否指向最後一行之後的位置:boolean isAfterLast()
13.給定列名的從零開始的列索引,如果列名不存在,則返回 -1:int getColumnIndex(String columnName)
14.給定列名的從零開始的索引,如果該列不存在則拋出非法參數異常:int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException
15.給定的從零開始的列索引處的列名:String getColumnName(int columnIndex)
16.返回一個字元串數組,其中按列在結果中的順序保存結果集中所有列的名稱。:String[] getColumnNames()
17.返回總列數:int getColumnCount()
18.各類型返回值
(1)以位元組數組的形式返回請求列的值:byte[] getBlob(int columnIndex)
(2)以字元串形式返回請求列的值:String getString(int columnIndex)
(3)以整數形式返回請求列的值:int getInt(int columnIndex)
(4)以 long 形式返回請求列的值:long getLong(int columnIndex)
(5)以浮點數形式返回請求列的值:float getFloat(int columnIndex)
(6)以雙精度形式返回請求列的值:double getDouble(int columnIndex)
(7)返回給定列值的數據類型:int getType(int columnIndex)
(8)列值是否為空:boolean isNull(int columnIndex)
(9)以短形式返回請求列的值:short getShort(int columnIndex)
19.檢索請求的列文本並將其存儲在提供的緩沖區中:void StringToBuffer(int columnIndex, CharArrayBuffer buffer)
20.關閉游標:void close()
21.游標是否關閉:boolean isClosed()
22.注冊一個觀察者,當支持此游標的內容發生變化時調用該觀察者:void registerContentObserver(ContentObserver observer)
23.銷毀注冊的觀察者:void unregisterContentObserver(ContentObserver observer)
24.注冊一個觀察者,當數據集的內容發生變化時被調用:void registerDataSetObserver(DataSetObserver observer)
25.銷毀注冊的觀察者:void unregisterDataSetObserver(DataSetObserver observer)
26.注冊以查看內容 URI 的更改。這可以是特定數據行的 URI,也可以是內容類型的通用URI:void setNotificationUri(ContentResolver cr, Uri uri)
cr是上下文,uri是需要觀看的內容
27.是否所有游標移動都應導致調用 onMove():boolean getWantsAllOnMoveCalls()
只有在此方法返回 true 時,才會跨進程調用 onMove()
28.返回一組額外的值:Bundle getExtras()
29.游標用戶與游標通信的帶外方式:Bundle respond(Bundle extras)
30.設置 Bundle 返回的getExtras():void setExtras(Bundle extras)
4. android 怎麼繪製表格邊框
一、表格最蛋疼的就是那根線,網上有個很好的方法,大概思路是這樣的:
1、給表格設置一個背景色(線的顏色)
2、給表格設置一個內邊距(線的寬度的一半)
3、設置每一項內邊距(線的寬度的一半)
3、給項的內容設置一個背景色(顏色不同於線即可)
顯示效果大概是這樣的:
二、數據的動態載入使用Adapter類,便與布局載入
自定義TableLayout載入的主體方法:
public void setAdapter(BaseAdapter baseAdapter, int column) {
if (baseAdapter == null || baseAdapter.getCount() == 0) {
return;
}
this.mAdapter = baseAdapter;
this.column = column;
drawLayout();
}
private void drawLayout() {
removeAllViews();
int realcount = mAdapter.getCount();
int count = 0;
if (realcount < column) {
count = column;
} else if (realcount % column != 0) {
count = realcount + column - (realcount % column);
} else {
count = realcount;
}
TableRow tableRow = null;//每一行的TableRow
for (int i = 0; i < count; i++) {
final int index = i;
View view = null;
if (index >= realcount) {
view = mAdapter.getView((realcount - 1), null, null);
view.setVisibility(View.INVISIBLE);
} else {
view = mAdapter.getView(index, null, null);
}
if (index % column == 0) {// 整行
tableRow = new TableRow(mContext);
}
if (tableRow != null) {//添加每一個Item
tableRow.addView(view);
}
if (index % column == 0) {// 整行
addView(tableRow, new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
}
}
三、使用和ListView的方式基本一樣
public class MainActivity extends Activity {
private List<Map<String, Object>> dataList;
private TableBorderLayout layTable;
private String[] datas = new String[] { "瘋狂", "個性", "張揚", "抖擻", "加油", "奮斗",
"努力", "精神" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
loadDatas();
}
private void initViews() {
layTable = (TableBorderLayout) findViewById(R.id.layTable);
}
private void loadDatas() {
dataList = new ArrayList<Map<String, Object>>();
Map<String, Object> item = null;
for (int i = 0; i < datas.length; i++) {
item = new HashMap<String, Object>();
item.put("Title", datas[i]);
dataList.add(item);
}
layTable.setAdapter(new MyAdapter(this, dataList));
}
}