Android onItemClick 提供不正确的 id
Android onItemClick giving Incorrect id
我正在尝试通过查询 SQLite 数据库来获取 ListView 中单击项目的详细信息。我将来自 onItemClick 的 long id 值作为主键传递。但是,long id 与 Table 中的实际主键不匹配。我通过查询 Table.
中所有行的主键找到了实际的主键
我有以下问题:
1.我假设onItemClick(AdapterView parent, View view, int position, long id)中的long id参数携带数据库中item的主键是否正确table?
- 如果没有,我该如何获取主键?
我在下面附加了我的代码:
list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Display Client Details
Intent displayclient = new Intent(view.getContext(), display_clientdetails.class);
Integer db_id = (int) id;
String TAG = "client_list";
Log.d(TAG,"Position is" +position +" ID is " +db_id);
displayclient.putExtra("client_id",db_id);
view.getContext().startActivity(displayclient);
}
});
不,你不对。如果您使用的是自定义适配器,则应覆盖 getItemId(int position) 以控制和 return 无论您考虑的是什么 ID。
我通常使用这样的东西,但这取决于你的主键类型。您可能还必须覆盖 getItem(int position).
@Override
public long getItemId(int position) {
return getItem(position).getId();
}
I have the following questions: 1. Am I right in assuming that the
long id parameter in onItemClick(AdapterView parent, View view, int
position, long id) carries the primary key of the item in the database
table?
是的,你错了。 onItemClick
中提供的 id
是适配器 getItemId
returns 的结果。
我正在尝试通过查询 SQLite 数据库来获取 ListView 中单击项目的详细信息。我将来自 onItemClick 的 long id 值作为主键传递。但是,long id 与 Table 中的实际主键不匹配。我通过查询 Table.
中所有行的主键找到了实际的主键我有以下问题: 1.我假设onItemClick(AdapterView parent, View view, int position, long id)中的long id参数携带数据库中item的主键是否正确table?
- 如果没有,我该如何获取主键?
我在下面附加了我的代码:
list.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Display Client Details
Intent displayclient = new Intent(view.getContext(), display_clientdetails.class);
Integer db_id = (int) id;
String TAG = "client_list";
Log.d(TAG,"Position is" +position +" ID is " +db_id);
displayclient.putExtra("client_id",db_id);
view.getContext().startActivity(displayclient);
}
});
不,你不对。如果您使用的是自定义适配器,则应覆盖 getItemId(int position) 以控制和 return 无论您考虑的是什么 ID。
我通常使用这样的东西,但这取决于你的主键类型。您可能还必须覆盖 getItem(int position).
@Override
public long getItemId(int position) {
return getItem(position).getId();
}
I have the following questions: 1. Am I right in assuming that the long id parameter in onItemClick(AdapterView parent, View view, int position, long id) carries the primary key of the item in the database table?
是的,你错了。 onItemClick
中提供的 id
是适配器 getItemId
returns 的结果。