我有一个简单的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