我是Android的新手,我有一个简单的问题,我无法解决。我想要的是从数据库加载带有ID的listview,这样当我点击它时,它将匹配数据库中的id。这是我的代码:
public ArrayList<String> getAllContact() {
ArrayList<String> array_list = new ArrayList<>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery("SELECT * FROM contacts", null);
res.moveToFirst();
while (res.isAfterLast() == false){
array_list.add(res.getString(res.getColumnIndex(CONTACT_COLUMN_NAME)));
res.moveToNext();
}
return array_list;
}
mydb = new DBHelper(this);
ArrayList array_list = mydb.getAllContact();
ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);
obj = (ListView) findViewById(R.id.listView1);
obj.setAdapter(arrayAdapter);
obj.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int id_in_db = position + 1
Bundle dataBundle = new Bundle();
dataBundle.putInt("cid", id_in_db);
Intent intent = new Intent(getApplicationContext(), DisplayContact.class);
intent.putExtras(dataBundle);
startActivity(intent);
}
});
我可以从onclickitem获得的是列表中项目的位置,该位置与我在数据库中的记录不匹配。我可以看到.setTag
方法可以解决方案,但我不知道如何在may代码中应用它。有人可以帮我吗?
答案 0 :(得分:0)
因此,您可以通过以下方式检索所选的商品ID:
int id_in_db = array_list.get(position).ID
Bundle dataBundle = new Bundle();
dataBundle.putInt("cid", id_in_db);
并在您的DisplayContact活动中从数据库加载它,或者您不仅可以传递整个项目的ID,因此无需再次加载它