我扩展了CursorAdapter并将其与ListView相关联。我有两种不同的行布局,并实现了getViewTypeCount
,getItemViewType
,newView
和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;
}
但这似乎搞砸了回收意见。
如何实现这一目标?或者这是实现这个的坏方法吗?
答案 0 :(得分:0)
首先,您不应该将布局整数ID存储在持久存储中,这些ID可以(并且将会)根据事物的顺序和名称随后更改,因此很可能会在以后咬你。这实际上可能是你麻烦的根源。
我看到的另一件事是您没有使用提供给您的position
参数,那么您怎么知道mCursor
中的数据对应于当前查询的位置?