2014-09-01 83 views
2

以下問題:我使用自定義ArrayAdapter並在顯示項目列表時實施ViewHolder模式。我也使用convertViews。 加載一切都很好,列表項目顯示正確,交替的顏色。當我滾動快速上下,顏色變化,並不交替了... 例如當加載:綠色,藍色,綠色,藍色... 後滾動:綠色,藍色,綠色,綠色,環保,綠色....ListView備用行顏色在向上滾動和向下滾動時錯誤

下面是一些代碼:

public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    ViewHolder holder; 

    StoreTemplate curr = templates.get(position); 

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.template_store_rowlayout, 
       parent, false); 
     holder = new ViewHolder(); 
     holder.name = (TextView) convertView 
       .findViewById(R.id.name); 
     // more attr skipped here... 
     } 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.name.setText(curr.getName()); 
    // more attr set here... 


    // this changes background 
    if ((position % 2) == 0) { 
     convertView.setBackgroundColor(context.getResources().getColor(
       R.color.background_green)); 
    } 


    // code skipped here 

    return convertView; 
} 

我怎麼能保證,該行始終altenately着色,即使我滾動,或搜索並重新加載列表?

+1

我會把一個** else **分支給你的**甚至**行的顏色** ** **。 – 2014-09-01 19:02:46

回答

3

你忘記if statementelse部分,你要更改行背景。你可能想這樣嘗試:

// this changes background 
    if ((position % 2) == 0) { 
     convertView.setBackgroundColor(context.getResources().getColor(
       R.color.background_green)); 
    } else { 
     convertView.setBackgroundColor(context.getResources().getColor(
       R.color.your_color)); 
    } 
+0

非常感謝。你節省了我的時間! – MOHRE 2016-07-31 09:28:35