在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 都返回列表中的位置。 感谢您的帮助,我可以说任何以前的主题都对我有帮助。
答案 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()
方法
注意强>
当列表视图重新循环时,不要使用位置,这总是在改变。