我已经搜索过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值?
非常感谢任何帮助。
答案 0 :(得分:0)
ArrayAdapter
和SimpleCursorAdapter
是两个不同的东西,有两种不同的方式。
Cursor
用于从SQLite数据库中读取数据,SimpleCursorAdapter
用于读取此游标中的数据,但ArrayAdapter
可用于List
或数组。
因此,正如您所理解的那样,您在Cursor
中只有ArrayAdapter
但只有List
/数组(仅限数据!)。
在ArrayAdapter
中getItemId
由返回position
实现,因为它是列表/数组中的唯一位置。