2014-02-14 108 views
0

我想知道如何創建一個循環來爲每個列表視圖項目設置特定的背景顏色,以重現模式。假設我有10個項目和4種顏色,並且我希望10個項目按照圖案的順序進行着色並重復,直到所有項目都變成彩色。考慮到我已經在一個整數數組以下顏色:以特定的重複模式設置Listview項目的顏色

int[] colours = {Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA}; 
+0

你知道之前定義你的陣列適配器的順序?那個清單會改變嗎?如果它改變了,它是否必須改變行的背景? – nKn

+0

是的,它是一個預定義的順序,沒有它不會必須改變 – Aashir

回答

3

嗯,我希望實現一個自定義Adapter或這個ViewBinder

Adapter的情況下,例如ArrayAdapter你必須重寫getView方法

... 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = convertView; 
    if (view == null) { 
     view = getActivity().getLayoutInflater().inflate(R.layout.item, null); 
    } 

    view.setBackgroundColor(colors[position % colors.length]); 

    return view; 
} 
.... 
+0

我試過所有這種情況下,沒有保持相同的重複順序。 – Aashir

+0

用編輯後的代碼再試一次。我測試了它,它應該工作。 – ntv1000

+0

更新正常。謝謝! – Aashir

0

首先,你必須要清楚兩件事情:

  1. 這應該在去過程getView()
  2. getView()渲染你的行,但它不順序。性能很大程度上取決於您的佈局實現,但不能保證您的行將按順序呈現。

這麼說,我覺得有可能是一個辦法做到這一點:

  • 之前將數據傳遞到您的ArrayAdapter,在你ArrayList定義一個額外的變量,你應該如果你使用一個類還沒有使用它。
  • 爲其分配想要設置它的背景的編號。理想情況下,這應該是intColor.YOURCOLOR你想要設置它。
  • 一旦處理您的getView()方法中,獲取數據行和簡單的調用:

    YourClass item = (YourClass) getItem[position]; 
    convertView.setBackgroundColor(item.getMyColor()); 
    
相關問題