我有一个ListView
(在Activity
而不在ListActivity
中),它利用自定义游标适配器从我的本地数据库中获取一些数据并在{{ListView
内显示1}}。
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id)
{
Log.i(tag, "position = " + position);
Log.i(tag, "id is : " + id));
}
});
假设我的数据库列如下:
id,name,surname,dob,height,gender,placeOfBirth,maritalStatus。
但是,我在listview(row.xml)中只显示名称和姓氏。 但是,每当用户点击列表中的某一行时,我也想检索其余的数据,例如,点击该行的ID或性别。
问题是,我没有显示列表中db行的所有信息,但是,当用户按下列表时,我需要检索该列表的一些数据。我怎么能在这里做到这一点?
以下方法不起作用,因为我不在ListActivity中,只有Activity。
public void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);
Cursor c = ((SimpleCursorAdapter)l.getAdapter()).getCursor();
c.moveToPosition(position);
//get the data...
}
答案 0 :(得分:4)
arg0
中的OnItemClickListener
参数 ListView
。但是,你可以做到
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
// This will get the cursor from the adapter, already moved to position
Cursor cursor = (Cursor) mCursorAdapter.getItem(position)
//get the data...
}
});
答案 1 :(得分:-1)
在getView
方法中你应该使用类似这样的东西
view.setTag(data); // you can pass here your specific data for each item
假设您的数据只是一个整数,那么您可以通过这种方式从onItemClick()
获取此值:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Integer data = (Integer) view.getTag();
// your operation
}