我想知道如何創建一個循環來爲每個列表視圖項目設置特定的背景顏色,以重現模式。假設我有10個項目和4種顏色,並且我希望10個項目按照圖案的順序進行着色並重復,直到所有項目都變成彩色。考慮到我已經在一個整數數組以下顏色:以特定的重複模式設置Listview項目的顏色
int[] colours = {Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA};
我想知道如何創建一個循環來爲每個列表視圖項目設置特定的背景顏色,以重現模式。假設我有10個項目和4種顏色,並且我希望10個項目按照圖案的順序進行着色並重復,直到所有項目都變成彩色。考慮到我已經在一個整數數組以下顏色:以特定的重複模式設置Listview項目的顏色
int[] colours = {Color.RED, Color.BLUE, Color.GREEN, Color.MAGENTA};
嗯,我希望實現一個自定義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;
}
....
首先,你必須要清楚兩件事情:
getView()
getView()
渲染你的行,但它不順序。性能很大程度上取決於您的佈局實現,但不能保證您的行將按順序呈現。這麼說,我覺得有可能是一個辦法做到這一點:
ArrayAdapter
,在你ArrayList
定義一個額外的變量,你應該如果你使用一個類還沒有使用它。int
與Color.YOURCOLOR
你想要設置它。一旦處理您的getView()
方法中,獲取數據行和簡單的調用:
YourClass item = (YourClass) getItem[position];
convertView.setBackgroundColor(item.getMyColor());
你知道之前定義你的陣列適配器的順序?那個清單會改變嗎?如果它改變了,它是否必須改變行的背景? – nKn
是的,它是一個預定義的順序,沒有它不會必須改變 – Aashir