Android onItemClick 给出不正确的 id

标签 android sqlite android-listview onitemclick

我试图通过查询 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/

    相关文章:

    java - 我正在尝试创建一个秒表应用程序,但在添加膝上按钮和继续按钮时遇到问题

    android - 从 Qt Creator 附加到 Android 进程

    android - setSelection 后允许滚动 ListView

    android - 如何在ListView中正确使用TextSwitcher?

    android - 从 Android 中的字符串资源填充 listView

    android - 检查 Android Webview 时 Google Chrome Devtools 损坏

    java - 如何在 Android 上用 Java 创建多图

    android - 如何从apk文件中获取数据库文件?

    Android SQLite - 主键 - 插入表

    java - Sqlite 数据库 onUpgrade() 没有被调用