0

CursorAdapter を拡張し、ListView に関連付けました。行には 2 つの異なるレイアウトがありgetViewTypeCount、 、getItemViewTypenewViewおよびを実装していbindViewます。データは、各行に、このアイテムが持つべきレイアウトの種類を示すレイアウト列がある SQL テーブルから取得されます。

getViewTypeCountはこのように見えます:

@Override
public int getItemViewType(int position) {
int layout = mCursor.getInt(mLayoutIndex);

if (layout == DataHelper.LIST_LAYOUT_ADD_PROJECT)
    return 0;
else
    return 1;   
}

しかし、これはビューのリサイクルを台無しにしているようです。

これはどのように達成できますか?それとも、これはこれを実装する悪い方法ですか?

4

1 に答える 1

0

まず第一に、レイアウトの整数 ID を永続的なストレージに保存しないでください。これらの ID は、後のコンパイルで順序と名前に基づいて変更される可能性があり (変更される可能性があります)、後で問題になる可能性が高くなります。これが実際にあなたの問題の原因かもしれません。

私が目にするもう 1 つのことは、提供された引数を使用していないことです。では、データが照会されている現在の位置に対応してpositionいることをどのように知ることができますか?mCursor

于 2011-08-03T19:53:21.437 に答える