我试图通过查询SQLite数据库来获取ListView中单击项的详细信息。我将onItemClick中的long id值作为主键传递。但是,long id与表中的实际主键不匹配。我通过查询表中所有行的主键找到了实际的主键。
我有以下问题: 1.我是否正确假设onItemClick中的long id参数(AdapterView父视图,View视图,int position,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);
}
});
答案 0 :(得分:3)
不,你不对。如果您使用的是自定义适配器,则应覆盖getItemId(int position)以控制并返回您认为是id的任何内容。
我通常使用这样的东西,但这取决于主键的类型。您还可能必须覆盖getItem(int position)。
@Override
public long getItemId(int position) {
return getItem(position).getId();
}
答案 1 :(得分:0)
是的,你错了。我有以下问题:1。我是否正确地假设了 onItemClick中的long id参数(AdapterView父视图,视图视图,int position,long id)携带数据库中项目的主键 表
id
中提供的onItemClick
是适配器getItemId
返回的结果。