我正在處理一個ListActivity,它將顯示一堆數字(權重)。我想改變ListView中特定行的背景。爲此,我創建了ArrayAdapter類的自定義實現,並重寫了getView方法。該適配器接受一個數字列表,並將數字20的行的背景設置爲黃色(爲了簡單起見)。getView中的自定義ArrayAdapter setBackground
public class WeightListAdapter extends ArrayAdapter<Integer> {
private List<Integer> mWeights;
public WeightListAdapter(Context context, List<Integer> objects) {
super(context, android.R.layout.simple_list_item_1, objects);
mWeights = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
int itemWeight = mWeights.get(position);
if (itemWeight == 20) {
v.setBackgroundColor(Color.YELLOW);
}
return v;
}
}
的問題是,不僅與數20行得到黃色背景,但也與數字0(第一行即是)行,我不知道爲什麼會這樣。
我在getView方法中做了什麼錯誤(如調用超級方法)?我推理的實現是:所有返回的視圖應該是相同的(這就是爲什麼我叫超級方法)只有符合if條件的視圖應該被改變。
感謝您的幫助!
我明白了。這是有道理的,是的。所以現在的問題是解決這個問題的最好方法是什麼。切換convertView或設置兩個樣式屬性,如果結束其他,選項? – Igor 2010-10-24 15:27:08