如何从listView(数据库)获取_id [android]

时间:2014-12-09 11:36:20

标签: android sql android-listview

在listView上单击某个项时,我遇到了接收_ID值的问题。

我有这段代码:

List<SavedSearch> values =  mydb.getAllSavedSearches();

      ArrayAdapter<SavedSearch> adapter = new ArrayAdapter<SavedSearch>(this,
                android.R.layout.simple_list_item_1, values);
      //adding it to the list view.
      obj = (ListView)findViewById(R.id.listView1);
      obj.setAdapter(adapter);

      obj.setOnItemClickListener(new OnItemClickListener(){

     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position,
     long id) {

我的问题是我想在onItemClick中以某种方式从listView中的被点击项目的数据库中获取_ID值。 int position long id 都返回列表中的位置。 感谢您的帮助,我可以说任何以前的主题都对我有帮助。

2 个答案:

答案 0 :(得分:1)

如果您正在使用数据库,我建议您不要使用ArrayAdapter,而是使用CursorAdapter。然后,只需从getItemId()调用方法CursorAdapter即可检索给定位置的项目ID。所以,这样做:

CursorAdapter adapter = new CursorAdapter(Context yourAppContext, Cursor yourDBCursor, false);
obj = (ListView)findViewById(R.id.listView1);
obj.setAdapter(adapter);
obj.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {

    adapter.getItemId(position); // This is the _ID value
}

答案 1 :(得分:0)

这只是建议。我不确定这会解决这个问题。 方法1: 每当你加载listView时只需设置行的id,你就可以从onItemClikListener方法获取id

方法2: 添加texView(设置可见性消失)并将文本设置为您的id并使用getText()方法

获取ID

注意

当列表视图重新循环时,不要使用位置,这总是在改变。