单击列表视图项时从 SQLite 数据库中获取行 ID

Posted

技术标签:

【中文标题】单击列表视图项时从 SQLite 数据库中获取行 ID【英文标题】:Fetching row id from SQLite database on clicking a listview item 【发布时间】:2019-06-01 07:32:00 【问题描述】:

我已经使用 ArrayAdapter 从数据库中填充了列表视图,我想在单击项目时获取列表项的数据库行 ID。我已经搜索了很多小时,但我无法得到答案,因为我是初学者。

这是我的 main.java

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView=findViewById(R.id.quote_list);
        registerForContextMenu(listView);
        DatabaseAccess datac= DatabaseAccess.getInstance(getApplicationContext());
        datac.open();
        final ArrayList<String> thelist = new ArrayList<>();
        Cursor data=datac.getquotes();
        while(data.moveToNext())
            thelist.add(data.getString(2));
           ListAdapter listAdapter = new ArrayAdapter<>(this,R.layout.textcenter,R.id.textitem,thelist);
            listView.setAdapter(listAdapter);
         
    



    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater menuInflater=getMenuInflater();
        menuInflater.inflate(R.menu.my_contextual_menu,menu);
    

    @Override
    public boolean onContextItemSelected(MenuItem item) 
        AdapterView.AdapterContextMenuInfo info =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
        return super.onContextItemSelected(item);
    

【问题讨论】:

onContextItemSelected 方法中使用 AdapterContextMenuInfo#id 字段 - 文档说:“正在显示上下文菜单的项目的行 ID。” 【参考方案1】:

这样试试, 1.点击list view的item,会得到id。 2. 从该索引中获取字符串值并调用一个方法,将收集到的字符串作为参数发送并在该方法中触发查询,例如

return db.rawQuery("select row_id from your_tableName where string_columnName="+your_passed_string+";",null);
    在光标中收集 row_id 并将其转换为 int 值,然后将其显示在屏幕上。 完成。

【讨论】:

您的回答帮助我以不同的方式做到这一点。我使用 String selectqt= listAdapterf.getItem(info.position); 检索了列表内容;然后我使用 'where' = selectqt 从数据库中选择 id。谢谢你

以上是关于单击列表视图项时从 SQLite 数据库中获取行 ID的主要内容,如果未能解决你的问题,请参考以下文章

单击列表视图项时检索的值

从 ListView(SQLite 数据库)中长按行删除

当我单击列表视图的操作项时,将文本从列表视图传递到另一个活动

在复选框状态更改时从回收器视图适配器更新 sqlite 数据库

点击 Android/Java 列表视图项时,如何禁用单击声音?

OnItemClick 如何从列表视图中获取单击项目的文本值