我有一个使用Array Adapter和ArrayList创建的简单列表视图;
无论如何要访问列表视图中的某一行,然后更改列表视图中该行中驻留的文本视图的文本颜色?
我知道如何更改textview的文本颜色,但我在访问列表视图中的文本视图时遇到问题
答案 0 :(得分:13)
如果查看simple_list_item_1的源代码,您会发现它只是一个TextView。来源是:
<sdk-dir>/platforms/<your-platform>/data/res/layout/simple_list_item_1
ArrayAdapter超类将在其getView方法中返回TextView。这意味着你可以继承ArrayAdapter,在你的子类'getView方法中,你可以简单地链接到超类,转换它返回到TextView的View,并做你的事情。例如,如果要将列表中的前三项设置为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的TextViews的ID为android.R.id.text1
和android.R.id.text2
,因此您应该能够按如下方式获取它们:
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
}
答案 1 :(得分:1)
使用自定义列表项,在适配器getView
方法中,您可以通过调用findViewById(R.id.myText)
然后调用setTextColor
轻松更改文字颜色。事实上,您可以使用内置列表项执行此操作,您只需要知道TextView的ID ...我不会随意,但您应该能够轻松找到它。
要在XML中更改它,请参阅Applying Styles and Themes以在使用标准ListView项时更改文本颜色。