【问题标题】:Android sqlite retrieving row in onItemSelectedAndroid sqlite在onItemSelected中检索行
【发布时间】:2013-02-21 01:07:49
【问题描述】:

当我以这种方式在微调器中单击时,我试图检索我的表的真实_id

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String c = parent.getSelectedItem().toString();
    long id_mark = parent.getItemIdAtPosition(position);
    Toast.makeText(parent.getContext(), "Category: " + c + " | _id: " + id_mark, Toast.LENGTH_LONG).show();
}

我的表:(用户删除了一些列)

_id | category_name
---------------------
1   | NAME_HERE_1
3   | NAME_HERE_2
4   | NAME_HERE_3
7   | NAME_HERE_4

Toast 输出为:

Category: NAME_HERE_2 | _id: 2

id_mark 与我的表的_id 不同。那么如何进行呢? 提前致谢!

【问题讨论】:

  • 不知道你的适配器类(类型和你如何喂它)很难说

标签: java android sqlite spinner


【解决方案1】:

id_mark 与我的表的_id 不同。那么如何进行呢?

如果您正在使用 CursorAdapter 并希望从表中获得 _id,只需使用 onItemSelected() 中的第四个参数 idid 已经保存了所选行的表主键。

【讨论】:

  • 但是如果用户擦除第 2 行,例如,_id=3 的列将传递给 id=2 的微调器。结果是一样的,不是吗?
  • 如果您使用的是 Cursor 和 CursorAdapter,则不会。您使用的是什么类型的适配器?
  • 我使用了 ArrayAdapter 来设置微调器
  • 嗯,然后您必须编写第二个查询并将此信息存储在一个新数组中,然后实现一种绑定多个数组并反映数据库可能异步发生的任何更改的方法... 或者你可以切换到CursorAdapter,因为它比ArrayAdapter写起来更快,使用起来也更快。
  • 我将首先尝试使用 CursorAdapter。非常感谢你!
猜你喜欢
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 2017-10-24
  • 2016-01-28
  • 2018-04-18
  • 2011-09-09
相关资源
最近更新 更多