参考: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)某项的响应*/