2014-12-09 51 views
0

我在ListView上单击项目时收到_ID值时出现问题。如何从ListView(数据库)获取_id [android]

我有这样的代码:

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 and long id两者都只返回列表上的位置。 感谢您的帮助,我可以说以前的任何主题都对我有所帮助。

回答

1

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

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 
} 
0

这只是建议。我不确定这会解决问题。 方法1:每当你加载的ListView 刚才设置的ID为行,你可以从onItemClikListener方法获取ID

方法2: 添加texView(集可视性消失),并设置文本您的ID并获得ID使用getText()方法

注意

不要使用位置时,列表视图是回收,这是一直在变化。

相关问题