如果您使用 anArrayAdapter
来支持您的ListView
,那么@jaibatrik 的建议绝对是一个好建议。但是,如果您使用的是CursorAdapter
,则利用 . 的返回值可能更容易getItemId()
。
默认情况下, a将在您提供CursorAdapter
的名称中查找列,并在您单击项目时将其作为值返回:"_id"
Cursor
id
onItemClick(AdapterView<?> parent, View view, int position, long id)
最后一个值将包含光标项的 id。您还可以覆盖此行为并让它返回您在Cursor
.
对于 an 也是如此ArrayAdapter
:默认情况下,它将返回项目在数组中的位置作为唯一 id。但是,您可以通过覆盖该方法轻松地使其返回fruit_id
每个项目。然后它将onItemClick(...)
直接传递,这样您就可以(再次)在那里检索它。
我的问题是,如果我抓取例如 item_id (不仅仅是 item),我应该将 item_id 放在 listView 行中的哪里(在 Android 端)?
拥有代表您在列表中可视化的数据的对象的美妙之处在于,您已经拥有了使其工作的所有成分。让我们Fruit
以@jaibatrik 给出的示例为例,并为此示例添加一个 getter:
class Fruit {
private int fruit_id;
private String fruit_name;
// Constructors
// Getters and Setters
public int getId() { return fruit_id; }
}
在您描述的评论中,您从数据库中检索水果数据并将其填充到列表中:
List<Fruit> fruits = ...
该列表应该是支持您的ArrayAdapter
. 更具体地说,由于它是一个类型化的类,因此您应该有一个ArrayAdapter<Fruit>
实例,将其设置为ListView
.
现在,假设您有一个OnItemClickListener
针对 的集合ListView
,只要用户点击一个项目,它就会触发。使用传递给回调的参数,您可以检索与所选位置关联的项目:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Fruit fruit = (Fruit) parent.getItemAtPosition(position);
int fruit_id = fruit.getId();
...
}
检索到对象后,您可以对它保存的数据做任何您喜欢的事情。无需针对行视图显式设置 id,因为它应该已经是支持ListView
.