我试图通过查询 SQLite 数据库来获取 ListView 中单击项目的详细信息。我将 onItemClick 中的长 id 值作为主键传递。但是,长id与表中的实际主键不匹配。我通过查询表中所有行的主键找到了实际的主键。
我有以下问题: 1.我假设 onItemClick(AdapterView Parent, View view, int position, long id) 中的 long id 参数携带数据库表中项目的主键,对吗?
- 如果没有,我该如何获取主键?
我已在下面附加了我的代码:
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(intposition) 以便控制并返回您考虑的 ID。
我通常使用这样的东西,但这取决于你的主键的类型。您可能还必须重写 getItem(intposition)。
@Override
public long getItemId(int position) {
return getItem(position).getId();
}
关于Android onItemClick 给出不正确的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28793237/