我在listview中有一行需要动态更改其布局。在我的数组适配器中,我有以下(简化)代码
@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
或调用listview invalidateViews()
,但它们都没有用。我的最后一招似乎重启了整个活动,但我不认为这是一个优雅的解决方案。