我正在使用带有扩展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.
}
答案 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“隐形”而不是“消失”,因此即使你看不到它们也会占用空间。