gpt4 book ai didi

android - getItem(position) 为不同的位置值返回相同的对象

转载 作者:行者123 更新时间:2023-11-29 14:27:56 28 4
gpt4 key购买 nike

我在public View 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));

我重写了“DragSortCursorAdapter”,所以 getItem() 被重写为如下所示:

@Override
public Object getItem(int position) {
int item = mListMapping.get(position, position);
return super.getItem(item);
//return super.getItem(position);
}

从这里调用的 getItem 是“android.support.v4.widget.CursorAdapter.getItem”的正常实现

问题是 itemCursor 和 itemCursor2 总是同一个对象。使用相同的对象 ID 和所有内容 - 我不知道这是怎么可能的,因为 getItem 是用不同的参数调用的,而且我输出到屏幕的列表只显示不同的值。

换句话说,当我的适配器迭代列表时,它似乎是这样的:

第一个列表项:

Cursor itemCursor = (Cursor) getItem(0);
Cursor itemCursor2 = (Cursor) getItem(0+1);

itemCursor 和 itemCursor2 都是 413d4800

第二个列表项:

Cursor itemCursor = (Cursor) getItem(1);
Cursor itemCursor2 = (Cursor) getItem(1+1);

itemCursor 和 itemCursor2 现在都是 4155aef8

至少第一次迭代中的 itemCursor2 和第二次迭代中的 itemCursor2 不应该相同吗?

无论如何 - 有人可以帮我解决这里发生的事情吗?它们都具有“android.content.ContentResolver$CursorWrapperInner@4155aef8”类型,这可能相关也可能不相关 - 我不确定。

编辑 覆盖的 getItem() 正在运行。 mListMapping.get(位置, 位置);返回正确的值,item 确实是两个不同的数字 - 返回相同的对象。

最佳答案

The problem is that itemCursor and itemCursor2 always is the same object.

正确。

I have no idea how this is possible since getItem is called with different arguments

许多方法可以在给定不同参数的情况下返回相同的值。

CursorAdapter 包装了一个CursorgetItem()始终 返回此Cursor。但是,getItem() 会将 Cursor 的内部索引定位到指定位置。因此,虽然 Cursor 本身是同一个对象,但 CursorgetString() 之类的方法返回的内容会有所不同,因为内部位置Cursor 不同。

您可以通过检查 the CursorAdapter source code 中的 getItem() 来了解实际情况。 .

关于android - getItem(position) 为不同的位置值返回相同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16548629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com