ListView显示错误的布局

时间:2014-08-30 07:38:33

标签: android listview

我有一个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行为。有什么建议吗? 感谢

2 个答案:

答案 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;