【发布时间】:2013-03-04 16:09:39
【问题描述】:
我有一个ListView 适配器,它根据行项的类型设置了不同的布局。
如果我使用支架回收我的行,如下面的代码所示,我想我会收到一些错误,因为对于回收的行,我会得到最新的未回收行的布局,这可能不是同类型。
在这种情况下我应该避免回收行吗?我还有哪些其他选择?
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
MyHolder holder = null;
int type = getItemViewType(position);
if(row == null)
{
holder = new MyHolder();
LayoutInflater inflater = ((Activity)mContext).getLayoutInflater();
if(type == TYPE_1){
row = inflater.inflate(R.layout.layout_type_1, parent, false);
}
else if(type == TYPE_2){
row = inflater.inflate(R.layout.layout_type_2, parent, false);
}
else {
row = inflater.inflate(R.layout.layout_type_3, parent, false);
}
row.setTag(holder);
}
else
{
holder = (MyHolder)row.getTag();
}
/* ... */
}
【问题讨论】:
-
您是否覆盖了 getViewTypeCount 和 getItemViewType?
-
使用 RecyclerView 进行回收和多行布局示例演示 code2concept.blogspot.in/2015/10/… 处理回收的地方是回收器本身
-
使用recycleView而不是listview,检查下面的链接它会膨胀recyclview中的不同行stackoverflow.com/a/39972276/3946958
标签: android android-listview adapter