如何在回收时确定ListView的布局不基于位置

时间:2011-08-03 19:41:27

标签: android listview layout android-cursoradapter

我扩展了CursorAdapter并将其与ListView相关联。我有两种不同的行布局,并实现了getViewTypeCountgetItemViewTypenewViewbindView。数据来自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;   
}

但这似乎搞砸了回收意见。

如何实现这一目标?或者这是实现这个的坏方法吗?

1 个答案:

答案 0 :(得分:0)

首先,您不应该将布局整数ID存储在持久存储中,这些ID可以(并且将会)根据事物的顺序和名称随后更改,因此很可能会在以后咬你。这实际上可能是你麻烦的根源。

我看到的另一件事是您没有使用提供给您的position参数,那么您怎么知道mCursor中的数据对应于当前查询的位置?