によって制御される によって設定されaddFooterView
た にフッター ビューを追加するために使用しています。ただし、 がフッター ビューをリサイクルしようとする
場合があり
ます ( を介して)。これにより、(リサイクルを許可した場合)またはフッタービューとして表示される一部のアイテムビュー(リサイクルを許可しない場合)が発生します。ListView
CursorAdapter
Loader
ListView
CursorAdapter.bindView
ClassCastException
私が正しく理解している場合、追加されたフッタービューはaddFooterView
リサイクルされることは想定されていません(「フッタービューは、レイアウト中にリサイクルされるべきではないリストの下部にある特別なビューです」)。したがって、これはおそらく Android API のバグです。
この問題を回避する方法はありますか? ListView
によって移入されたフッター ビューを追加する正しい方法は何CursorAdapter
ですか?
関連するコード:
アクティビティでは:
paletteView = (ListView)findViewById(R.id.palette);
paletteView.addFooterView(new PaletteAdapter.NewSlot(this));
paletteAdapter = new PaletteAdapter(this, null);
paletteView.setAdapter(paletteAdapter);
getLoaderManager().initLoader(0, null, this);
アダプター内 ( PaletteAdapter
):
@Override public void
bindView(View view, Context context, Cursor cursor)
{
if (view instanceof NewSlot)
{
Log.wtf(TAG,
("Recycle NewSlot to ID "
+ cursor.getLong(cursor.getColumnIndex
(DataProvider.Palettes._ID))));
return;
}
final Slot slot = (Slot)view;
// Blah blah...
}