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 が常に同じオブジェクトであることです。getItem が異なる引数で呼び出され、画面に出力したリストには異なる値しか表示されないため、オブジェクト ID とすべてが同じです。
つまり、アダプターがリストを反復すると、次のようになります。
最初のリスト項目:
Cursor itemCursor = (Cursor) getItem(0);
Cursor itemCursor2 = (Cursor) getItem(0+1);
itemCursor と itemCursor2 は両方とも 413d4800 です
2 番目のリスト項目:
Cursor itemCursor = (Cursor) getItem(1);
Cursor itemCursor2 = (Cursor) getItem(1+1);
itemCursor と itemCursor2 は両方とも 4155aef8 になりました
少なくとも最初の反復の itemCursor2 と 2 番目の反復の itemCursor2 は同一であるべきではありませんか?
いずれにせよ - 誰かがここで何が起こっているのか私を助けてくれますか? どちらも「android.content.ContentResolver$CursorWrapperInner@4155aef8」というタイプで、関連する場合と関連しない場合があります-よくわかりません。
EDITオーバーライドされた getItem() が機能しています。mListMapping.get(位置、位置); は正しい値を返しますが、itemは実際には 2 つの異なる数値であり、同じオブジェクトを返します。