我正在使用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...
}