2015-12-30 57 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

謝謝,感謝幫助:) –