【问题标题】:Android - Using getItemID in an ArrayListAdapterAndroid - 在 ArrayListAdapter 中使用 getItemID
【发布时间】:2014-08-11 15:58:39
【问题描述】:

我已经搜遍了 SO 和网络,寻找解决我的问题的方法。

我正在尝试用 ArrayListAdapter 替换 SimpleCursorAdapter。

我已经成功创建了我的 Adapter 类,现在需要访问数组的 _id 值以完成一些必需的处理。

我发现这个code 可以解决我的问题,但我收到一条错误消息,指出我的适配器中未定义 getCursor()。

@Override
public long getItemId(int position) {
Cursor cursor = getCursor();
cursor.moveToPosition(position);
return cursor.getLong(mCursor.getColumnIndex("_id"));

}

我的适配器中没有光标,所以我很困惑...... ArrayList 适配器在实现时工作正常。但是请注意,当我将 _id 字段添加为我的 Adapter 类的成员时,该字段中仅显示 0,而所有其他字段数据都是准确的。如果我直接查询我的数据库,我会收到所有预期的字段并且都是准确的。

如何访问光标?还有,我如何访问 _id 值?

任何帮助将不胜感激。

【问题讨论】:

  • 你的意思是ArrayAdapter
  • 是的,抱歉,这是我应该输入的内容。

标签: android arraylist android-arrayadapter


【解决方案1】:

ArrayAdapterSimpleCursorAdapter 是两个不同的东西,以两种不同的方式工作。

Cursor 用于从 SQLite 数据库读取数据,SimpleCursorAdapter 用于从该游标读取数据,但ArrayAdapter 将与List 或数组一起使用。

因此,您可以理解,ArrayAdapter 中没有Cursor,而只有List/Array(只有数据!)。

ArrayAdapter 中,getItemId 通过 return position 实现,因为它是列表/数组中的唯一位置。

【讨论】:

  • 我明白其中的区别;问题仍然是我无法使用 ArrayAdapter 访问 _id 值。如果我使用 adapter.getItemId(position),我会得到不正确的结果。
  • 不,您的 _id 将是传递的位置。 _id 是数据库中的一个字段(您没有),这里包含数据的是内部列表/数组。
  • 好的,这就是我的问题...我需要记录的主键,并且需要以某种方式将它包含在我的适配器类中。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
相关资源
最近更新 更多