參考:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html
一、最簡單的listView--ArrayAdapter
1、ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
textViewResourceId:佈局文件,可以是系統自帶;
objects:泛型對象。
2、補充,ArrayList即動態數組,
例:
ArrayLIst List = new ArrayList();
for(int i=0;i<10;i++) List.add(i);
List.RemoveAt(5);
3、補充:爲什麼要用List list = new ArrayList();不用ArrayList list = ArrayList();
問題就在於List有多個實現類,現在你用的是ArrayList,也許哪一天你需要換成其它的實現類,如 LinkedList或者Vector等等,這時你只要改變這一行就行了:
List list = new LinkedList(); 其它使用了list地方的代碼根本不需要改動。
假設你開始用 ArrayList alist = new ArrayList(), 這下你有的改了,特別是如果你使用了 ArrayList特有的方法和屬性。
http://www.cnblogs.com/aisiteru/articles/1151874.html
4、補充:泛型,類比c++模板 ,如list<string>
5、補充:類Activity中的setContentView(),android開發中如果想實現佈局頁面的跳轉可以使用setContentView()設置跳轉到需要的佈局文件上面。
6、補充,
eclipse 編碼時 代碼上的橫線今天再使用Eclipse編碼時,發現有些變量或類名上有些莫名其妙的橫線,如下圖所示:
現在才知道這些橫線的意思:這些橫線標示出來的類或方法,說明是舊版本中的,當前版本不建議使用。
二、一般用於數據庫SimpleCursorAdapter
public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)
後面兩個參數,一個包含數據庫的列的String型數組,一個包含佈局文件中對應組件id的int型數組。其作用是自動的將String型數組所表示的每一列數據映射到佈局文件對應id的組件上。
/**刷新listView*/
private void refreshLV()
{
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this ,null ,null ,1);//創建數據庫
dbHelper.getReadableDatabase();
myCursor = dbHelper.getCursor();
SimpleCursorAdapter myAdapter=new SimpleCursorAdapter
(
MainActivity.this,
R.layout.main_vlist,
myCursor,
new String[]{DatabaseHelper.FIELD_ID,DatabaseHelper.FIELD_EVENT_NAME,DatabaseHelper.FIELD_REMIND_TIME},
new int[]{R.id.eventIdTV,R.id.eventNameTV,R.id.remindTimeTV} //該參數所代表的控件在第二個參數所代表的佈局文件中定義
);
displayLV.setAdapter(myAdapter);
dbHelper.close();
}
/**刷新listView*/
三、單擊ListView的某項
myListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
myCursor.moveToPosition(arg2);
_id = myCursor.getInt(0);
myEditText.setText(myCursor.getString(1));
}
});
四、長按(長按彈出AlertDialog)
private ListView displayLV;
displayLV.setOnItemLongClickListener(new OnItemLongClickListener()
{
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3)//arg2點擊的item對應表中的_id,arg3被點擊的行號
{
// TODO Auto-generated method stub
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this ,null ,null ,1);//創建數據庫
dbHelper.getReadableDatabase();
myCursor = dbHelper.getCursor();
myCursor.moveToPosition(arg2);//移到數據庫的第arg2行
final int deleteId = myCursor.getInt(0);//第0列第2行對應的id
dbHelper.close();
new AlertDialog.Builder(MainActivity.this)
.setTitle("刪除提醒")
.setMessage
(
"確定刪除" +
"<" +
myCursor.getString(myCursor.getColumnIndex(DatabaseHelper.FIELD_EVENT_NAME)) +
">?"
)
.setPositiveButton
(
"確定",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int which)
{
//結合myCursor.moveToPosition(arg2),myCursor.getInt(0)表示獲取arg2行第0列對應的數據(該數據以整型返回,實際就是_id)
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this ,null ,null ,1);//創建數據庫
dbHelper.delete(deleteId);
dbHelper.close();
refreshLV();
}
}
)
.setNegativeButton
(
"取消",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog,int which) { }
}
)
.show();
return true;
}
});
/**長按displayLV(listView)某項的響應*/