强制自定义cursoradapter不回收视图

时间:2010-10-26 13:53:58

标签: android

我正在使用带有扩展CursorAdapter的适配器的listview。 列表项包含一些TextView,可以包含任意长度的文本。 现在的问题是视图(在列表视图中)被回收,项目可能会比需要的更多,因为视图中的上一个项目需要更大的空间。

我想解决方案是以某种方式不允许回收,或者只是在绑定时强制设置视图的大小。我一直在尝试一些不同的解决方案,但我没有找到办法。有人可以帮帮我吗? ;)

    @Override
public View newView(Context context, Cursor c, ViewGroup parent) 
{


    settings = ctx.getSharedPreferences("myprefs", 0);

    View v = inflater.inflate(R.layout.convoview_list_item, parent,false);
    ctx2 = context;
    parentGroup = parent;       
    return v;
}
@Override
public void bindView(View v, Context context, Cursor c)
{
    //Adding text etc to my views from the cursor here.
    }

2 个答案:

答案 0 :(得分:3)

如果你知道列表总是很小,即10个条目,这就是我做的事情(覆盖这2个方法)。因此,当视图被回收时,每个位置都会返回相同的类型。如果您知道您的列表可能很大但可能只有3-4种类型的列表项,那么不是返回位置,而是设置类型0,1,2等。

    @Override
    public int getItemViewType(int position) {
        return position;
    }

    @Override
    public int getViewTypeCount() {
        return MAX_ITEMS;
    }

答案 1 :(得分:0)

问题在于我的bindView实现使一些TextViews“隐形”而不是“消失”,因此即使你看不到它们也会占用空间。