Android onItemClick给出错误的ID

时间:2015-03-01 11:55:39

标签: android sqlite android-listview onitemclick

我试图通过查询SQLite数据库来获取ListView中单击项的详细信息。我将onItemClick中的long id值作为主键传递。但是,long id与表中的实际主键不匹配。我通过查询表中所有行的主键找到了实际的主键。

我有以下问题: 1.我是否正确假设onItemClick中的long id参数(AdapterView父视图,View视图,int position,long id)携带数据库表中项目的主键?

  1. 如果没有,我该如何获得主键?
  2. 我在下面添加了我的代码:

    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);
    
            }
    

    });

2 个答案:

答案 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返回的结果。