从与SimpleCursorAdapter绑定的ListView中获取选定的项
||
我是Android开发的新手...来自iPhone和.Net背景。我已经看到与此问题非常相似的问题,但是没有一个问题与SimpleCursorAdapter有关。
我有一个基本的ListActivity,它使用游标将来自SQLite查询的数据绑定到我的ListView:
ListAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.simple_list_item_1,
c,
new String[] {\"name\"},
new int[] {android.R.id.text1});
setListAdapter(adapter);
然后,当单击一个项目时:
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
//Difference between this:
Cursor c = (cursor)l.getItemAtPosition(position);
//and this??
Cursor c = (Cursor)l.getAdapter().getItem(position);
int categoryId = c.getInt(0);
}
这是获取所选元素ID的正确方法吗?这似乎很奇怪,因为在数据库关闭后(即在我绑定之后),我不认为可以使用游标。当我似乎找不到从该ID获取实际商品的方法时,传递的ID有什么意义?另外,我不明白为什么getItemAtPosition()将返回一个游标...游标绑定到整个列表;不只是一排。最后,如果这是正确的,则显示的两种获取光标的方式之间是否有区别?谢谢。
没有找到相关结果
已邀请:
2 个回复
系漏
。这将游标的生命周期与Activity的生命周期联系在一起(因此,当Activity被破坏时,游标将被关闭/清理)。
另外,数据库没有关闭,Cursor通常保持与数据库的实时连接(因此ListView可以滚动并执行可能需要将来访问Cursor内容的性质的事情。 对于您的核心问题,在
中最简单的方法是:
然后,您可以使用ѭ6来获取ID(通常情况下,假设您将ID列作为第一列获取)。但是,请注意,id是作为签名的一部分传递的(请参见
中的最后一个参数),因此您确实不需要再次获取它(但是如果要刻录循环,当然可以。)要访问其他列,您可以执行相同的操作,只需更改列索引。 希望能有所帮助。
磐剩