【发布时间】:2016-03-24 04:59:50
【问题描述】:
我是 android 新手,我遇到了无法解决的简单问题。我想要的是从数据库中加载带有 ID 的列表视图,这样当我点击它时,它将与数据库中的 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 方法可以是一个解决方案,但我不知道如何在可能的代码中应用它。有人可以帮我吗?
【问题讨论】:
-
positioninonItemClick是您的适配器中单击项目的位置。因此,您可以使用arrayAdapter获取与 db ID 关联的对象。 -
是的,我同意你的观点,但是我怎样才能在我的 arrayAdapter 中设置 ID,所以当我将它分配给我的 Listview 时,我可以在 onItemClick 中调用一个参数
-
有人可以帮忙吗?
-
为什么不获取id的数组列表而不是
CONTACT_COLUMN_NAME? -
我需要它显示在用户界面中
标签: android listview arraylist