2015-12-30 59 views
1

我有一个ListView,该数据在创建时正确填充了一个数组,但是当我滚动时,数据更改并且全部不按顺序。我不知道问题出在我的CustomListViewAdapter或我的DetailsPage上。下面是我使用生成textViewsFor LoopListView在滚动上更改数据

if (currentObject.setTime != null && currentObject.setName != null) { 
      String[] temporaryNames = currentObject.setName; 
      int totalNames = (currentObject.setTime.length/currentObject.setName.length); 

      for (int i = 1; i < totalNames; i++) { 
       currentObject.setName = ArrayUtils.addAll(currentObject.setName,temporaryNames); 
      } 
     } 

    listView.setAdapter(new BusRouteCustomListViewAdapter(this, currentObject.setName, currentObject.setTime)); 

这里是代码我customListViewAdapter

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

    Holder holder = new Holder(); 
    View v = convertView; 
    if (v == null) 
     if (locations[position] != null && times[position] != null) { 
      v = inflater.inflate(R.layout.busdetailrow, null); 

      holder.tv1 = (TextView) v.findViewById(R.id.text); 
      holder.tv2 = (TextView) v.findViewById(R.id.text2); 
      holder.tv1.setText(locations[position]); 
      holder.tv2.setText(times[position]); 

     } else { 

      v = inflater.inflate(R.layout.null_row, null); 
     } 

    return v; 
} 
+0

...查看我的回答如下......让我知道关心 –

回答

2

你用代码

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

    final Holder holder; 
    View v = convertView; 
    if (v == null) 
     { 

      holder = new Holder(); 
      v = inflater.inflate(R.layout.busdetailrow, null); 

      holder.tv1 = (TextView) v.findViewById(R.id.text); 
      holder.tv2 = (TextView) v.findViewById(R.id.text2); 

     v.setTag(holder); 
     } else { 

      holder = (Holder) v.getTag(); 
     } 

      holder.tv1.setText(locations[position]); 
      holder.tv2.setText(times[position]); 

    return v; 
} 
+0

这工作:)我想要做的是,如果数组中的字符串是'空',然后隐藏listView行。这就是为什么我有:v = inflater.inflate(R.layout.null_row,null);我的答案也是 –

+0

。如果使用持有人然后不应该为任何视图设置值,当convertView == null – GiapLee

+0

@DanielChambers ... Wc兄弟..如果它是可行的你..不妨接受其他谁也可能卡住未来的答案 –

1

使用您getView()像下面。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    Holder holder = new Holder(); 
    if (convertView == null){ 
     if (locations[position] != null && times[position] != null) { 
      convertView = inflater.inflate(R.layout.busdetailrow, null); 
      holder.tv1 = (TextView) v.findViewById(R.id.text); 
      holder.tv2 = (TextView) v.findViewById(R.id.text2); 
      holder.tv1.setText(locations[position]); 
      holder.tv2.setText(times[position]); 
     } else { 

     } 
     convertView.setTag(holder); 
    }else{ 
     holder = (Holder) convertView.getTag(); 
    } 
    return convertView; 
} 
+0

的情况下欣赏的帮助:) –

+0

欢迎。乐于帮助。 :) –

1

你没有可能实现设计持有者这些线替换代码。做出以下更改getView然后它会正常工作

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
Holder holder = new Holder(); 
if (convertView == null){ 

    if (locations[position] != null && times[position] != null) { 
     convertView = inflater.inflate(R.layout.busdetailrow, null); 
     holder.tv1 = (TextView) v.findViewById(R.id.text); 
     holder.tv2 = (TextView) v.findViewById(R.id.text2); 
     holder.tv1.setText(locations[position]); 
     holder.tv2.setText(times[position]); 

    } 
     else 
    { 

    } 
    convertView.setTag(holder); 
}else{ 
    holder = (Holder) convertView.getTag(); 
} 
return convertView; 
} 
+0

不要复制答案。不要在这里发表相同的答案。 –

+0

谢谢,感谢帮助:) –