在使用listview渲染数据库的数据时,将查询出来的数据id存入对象testmap中,key值用i=0,i++控制, value值就是数据的id。
Map<String ,Object> testMap=new HashMap<String, Object>();//声明对象testmap
int k=0;
Cursor cursor=db.query("diary",null,"account=?",new String[]{account},null,null,null);
if(cursor.moveToFirst()){
do{
account_item[0]=cursor.getString(cursor.getColumnIndex("Day"));
account_item[1]=cursor.getString(cursor.getColumnIndex("id"));
//渲染时,存入map:key值用i=0;1;2递增,value为渲染出来的数据的id
testMap.put(""+k,""+account_item[5]);
k++;
DiaryList list = new DiaryList(account_item[0]);
list.add(list);
}while(cursor.moveToNext());
} cursor.close();
生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,点击事件方法中的参数int i,就是该item在listview中的位置, Object c=testMap.get(""+i);获得testmap中的value,也就是存进去的id。就可以通过id获取数据库的数据了。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Object c=testMap.get(""+i);
int d=Integer.parseInt(c.toString());
Intent intent=new Intent(NoteActivity.this,NoteDetailActivity.class);
intent.putExtra("id",d);
startActivity(intent);
}
});