我在列表视图中有一行需要动态更改其布局。在我的数组适配器中,我有以下(简化的)代码
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(R.layout.default);
}
...
if(condition) {
View view = inflater.inflate(R.layout.new);
...
return view; // doesn't work
}
return convertView;
}
我的实际列表视图实际上非常复杂,我也将getViewType
用于两种不同的布局。但是上面的代码应该足以说明当我想动态切换布局时新布局将无法正确显示。
我的问题是,如何刷新convertView,或触发适配器/列表视图的重新加载到convertViews 将被清除的程度?我试过打电话notifyDataSetChanged
,或者打电话给 listviewinvalidateViews()
但他们都没有工作。我最后的手段似乎重新开始了整个活动,但我认为这不是一个优雅的解决方案。