Mar*_*kus 1 android listview cursor adapter listadapter
我在公共视图中有一个带有以下(测试)代码的适配器getView(int position,View convertView,ViewGroup parent):
Cursor itemCursor = (Cursor) getItem(position);
Cursor itemCursor2 = (Cursor) getItem(position+1);
String itemTitle = itemCursor.getString(itemCursor
.getColumnIndex(ItemColumns.TITLE));
String itemTitle2 = itemCursor2.getString(itemCursor2
.getColumnIndex(ItemColumns.TITLE));
Run Code Online (Sandbox Code Playgroud)
我重写"DragSortCursorAdapter",因此重写getItem()看起来像这样:
@Override
public Object getItem(int position) {
int item = mListMapping.get(position, position);
return super.getItem(item);
//return super.getItem(position);
}
Run Code Online (Sandbox Code Playgroud)
从这里调用的getItem是"android.support.v4.widget.CursorAdapter.getItem"的常规实现
问题是itemCursor和itemCursor2始终是同一个对象.使用相同的对象ID和所有内容 - 我不知道这是如何可能的,因为使用不同的参数调用getItem,并且输出到屏幕的列表仅显示不同的值.
换句话说,当我的适配器迭代列表时,它似乎这样做:
第一个清单项目:
Cursor itemCursor = (Cursor) getItem(0);
Cursor itemCursor2 = (Cursor) getItem(0+1);
Run Code Online (Sandbox Code Playgroud)
itemCursor和itemCursor2都是413d4800
第二个清单项目:
Cursor itemCursor = (Cursor) getItem(1);
Cursor itemCursor2 = (Cursor) getItem(1+1);
Run Code Online (Sandbox Code Playgroud)
itemCursor和itemCursor2现在都是4155aef8
至少不应该从第一次迭代中的itemCursor2和第二次迭代中的itemCursor2相同吗?
无论如何 - 有人可以帮我解决这里发生的事情吗?他们都有类型"android.content.ContentResolver$CursorWrapperInner@4155aef8",可能相关或不相关 - 我不确定.
编辑重写的getItem()正在运行.mListMapping.get(position,position); 返回正确的值,item确实是两个不同的数字 - 返回相同的对象.
问题是itemCursor和itemCursor2始终是同一个对象.
正确.
我不知道这是怎么可能的,因为getItem是用不同的参数调用的
给定不同的参数,许多方法可以返回相同的值.
一个CursorAdapter包装了Cursor.getItem()将始终返回此Cursor.但是,getItem()将内部索引Cursor定位为指定位置.因此,虽然Cursor本身是同一个对象,但Cursor类似方法的回报getString()会有所不同,因为其中的内部位置Cursor是不同的.
您可以通过检查行动中看到getItem()的的CursorAdapter源代码.
| 归档时间: |
|
| 查看次数: |
4400 次 |
| 最近记录: |