【android】listview动态更新(与数据库其间的交道)
【android】listview动态更新(与数据库之间的交道)
自己转战android已经有一段时间了。废话不多说了,开始吧。
listview大家应该不陌生。现在我将自己遇到的动态更新问题进行总结一下。
上代码是最好的。
listview绑定simplecursoradapter
cur的代码:
其中layout的listmsg中三个控件R.id.textViewID,R.id.textViewName,R.id.textViewVal;
数据库中"_id","name","val"(建议大家主键都采用_id的形式,原因我似乎不太记得了,我还做过测试,android的默认主键就是_id)
然后是listview的点击事件,这个事件最重要的是找到删除的_id。
代码如下:
下面是最重要的动态更新:
redelete的代码:
自己转战android已经有一段时间了。废话不多说了,开始吧。
listview大家应该不陌生。现在我将自己遇到的动态更新问题进行总结一下。
上代码是最好的。
listview绑定simplecursoradapter
ListView lv = (ListView) this.findViewById(R.id.listView); SimpleCursorAdapter sca = new SimpleCursorAdapter(this, R.layout.listmsg, cur, new String[]{"_id","name","val"}, new int[]{R.id.textViewID,R.id.textViewName,R.id.textViewVal}); lv.setAdapter(sca);
cur的代码:
Cursor cur = dao.show();
public Cursor show(){ db = dbh.getReadableDatabase(); Cursor cur = db.query("person",null, null, null, null, null, null); // cur.close(); return cur; }
其中layout的listmsg中三个控件R.id.textViewID,R.id.textViewName,R.id.textViewVal;
数据库中"_id","name","val"(建议大家主键都采用_id的形式,原因我似乎不太记得了,我还做过测试,android的默认主键就是_id)
然后是listview的点击事件,这个事件最重要的是找到删除的_id。
代码如下:
lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub selectedID = position; int i = sca.getCursor().getColumnIndex("_id"); // System.out.println("id:"+cur.getString(i)); delID = cur.getString(i); } });
下面是最重要的动态更新:
delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub System.out.println(selectedID+1); dao.redelete(delID); cur.requery(); sca.notifyDataSetChanged(); selectedID = 99999; } });
redelete的代码:
public void redelete(String s){ db = dbh.getWritableDatabase(); db.delete("person", "_id=?", new String[]{s}); }