我有一個簡單的ListView,它是使用Array Adapter和ArrayList創建的;更改ListView中的文本顏色
無論如何要訪問列表視圖中的某一行,然後更改列表視圖中該行所在的文本視圖的文本顏色?
我知道如何改變一個TextView的文本顏色,但我訪問文本視圖是列表視圖
我有一個簡單的ListView,它是使用Array Adapter和ArrayList創建的;更改ListView中的文本顏色
無論如何要訪問列表視圖中的某一行,然後更改列表視圖中該行所在的文本視圖的文本顏色?
我知道如何改變一個TextView的文本顏色,但我訪問文本視圖是列表視圖
如果您查看simple_list_item_1的源代碼,您會發現它只是一個TextView。源代碼位於:
<sdk-dir>/platforms/<your-platform>/data/res/layout/simple_list_item_1
ArrayAdapter超類將在其getView方法中返回該TextView。這意味着你可以繼承ArrayAdapter的子類,並且在你的子類的getView方法中,你可以簡單地鏈接到超類,將它返回到TextView並執行你的操作。例如,如果你想在你的列表中的前三個項目設置爲TEXTSIZE 24,其餘的14,你可以做到以下幾點:
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = (TextView) super.getView(position, convertView, parent);
if (position < 3) {
tv.setTextSize(24.0f);
} else {
tv.setTextSize(14.0f);
}
return tv;
}
如果您使用的是simple_list_item_1管理更復雜的搜索,你可以通過檢查源代碼來找出View上元素的id,然後在由超類返回的View上調用findViewById。例如,two_line_list_item.xml擁有的android.R.id.text1
和android.R.id.text2
IDS TextViews,所以你應該能夠得到他們把手如下:
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
TextView tv1 = (TextView)v.findViewById(android.R.id.text1);
TextView tv2 = (TextView)v.findViewById(android.R.id.text2);
//do what you want with the TextViews
}
通過自定義列表項的內部有問題,在你的適配器getView
方法,你可以改變通過調用findViewById(R.id.myText)
然後調用setTextColor
可輕鬆獲得文本顏色。實際上,您可以使用內置的列表項來執行此操作,您只需要知道TextView的ID ...我不會徒手,但您應該能夠輕鬆找到它。
如果您使用的是標準ListView項目,若要在XML中更改它,請參閱Applying Styles and Themes以更改文本顏色。
那麼有沒有辦法做到這一點在Java文件?我將根據一些輸入值動態更改它 – au789 2011-03-23 01:25:34
使用自定義列表項,在適配器'getView'方法中,您可以通過調用'findViewById(R.id.myText)'方便地更改文本顏色,然後調用'setTextColor '。實際上,您可以使用內置的列表項來完成此操作,您只需要知道TextView的'ID'即可。 – 2011-03-23 01:29:36
所以你說這是不可能的數組列表和陣列適配器。如果我想實現結果,我需要製作一個自定義列表項目? – au789 2011-03-23 01:32:05