我正在使用addFooterView
向 a 添加页脚视图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...
}