我有一个listview,并根据某些情况在其适配器中扩充布局。例如,考虑一下:
if (state1){
resource = R.layout.layout_1
}else if (state2){
resource = R.layout.layout_2
}
if (convertedView == null) {
view = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(resource, parent,false);
}
return view;
但有时ListView会感到困惑,它会为不同的状态显示相同的布局。我确信代码没有错。但在ListView行为。有什么建议吗? 感谢
答案 0 :(得分:0)
if (state1){
view = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.layout_1, parent,false);
}else if (state2){
view = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.layout_2, parent,false);
}
return view;
答案 1 :(得分:0)
我找到了解决方案。
问题是我检查ConverView参数是否为非null然后适配器不会使新视图膨胀并且它使用最后一个。如果我删除此条件并使适配器始终为新布局充气,问题就会得到解决。
像这样:
public View getView(int position, View convertedView, ViewGroup parent) {
View view;
int resource = 0;
if (state1){
resource = R.layout.layout_1;
}else{
resource = R.layout.layout_2;
}
//if (convertedView == null) { //I should Delete this condition
view = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.layout_2, parent,false);
//}
return view;