2013-03-04 53 views
0

我想改变基于comndition图像相关的枝条ACH项目是不是没有得到重复working.Items但图像越来越重复Android的ListView控件不能根据病情

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

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.search_shopping_items, 
        null); 
      holder = new ViewHolder(); 
      holder.txt = (TextView) convertView 
        .findViewById(R.id.TextView01); 
      holder.imgFavHis=(ImageView) convertView.findViewById(R.id.imgFavHis); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     if(LocalDb.isLoggedIn()){   

      holder.txt.setText(arr.get(position)); 
      if(hisList.contains(arr.get(position))){ 
       holder.imgFavHis.setImageResource(R.drawable.icnhistory); 
      } 
      else if (favList.contains(arr.get(position))){ 
       holder.imgFavHis.setImageResource(R.drawable.icnfavorite); 
      } 

     } 
     else{ 
        holder.txt.setText(arr.get(position)); 
     } 


     return convertView; 
    } 

} 

回答

0

形象得到改变形象如果条件(LocalDb.isLoggedIn())为false,则重复。 convertView进来getView()已经与图像。所以,这个图像停留在这种情况下。您可以在else语句中将null设置为imgFavHis。

顺便说一句,使用下面的

public Object getItem(int position) { 
    return arr[position]; 
} 

public long getItemId(int position) { 
    return position; 
} 
+0

返回ARR [位置]。这是什么回报 – Ciff 2013-03-04 08:04:09

+0

ListView需要知道您的项目。通过返回arr [position],可以显示项目如何链接到行(项目[0] - 第1行,项目[1] - 第2行等)。返回null是可以的,但它可能会导致错误。例如,如果你改变你的项目,而不是调用notifyDataSetChanged()ListView将会看到这个,并通过抛出一个异常让你知道你的错误。所以,这完全取决于你,但我建议不要返回null。 – tundundun 2013-03-04 08:36:10

+0

我的arr是arraylist ...但这需要一个数组 – Ciff 2013-03-04 08:47:43