在ListView中更改文本颜色

时间:2011-03-23 01:10:37

标签: android android-listview

我有一个使用Array Adapter和ArrayList创建的简单列表视图;

无论如何要访问列表视图中的某一行,然后更改列表视图中该行中驻留的文本视图的文本颜色?

我知道如何更改textview的文本颜色,但我在访问列表视图中的文本视图时遇到问题

2 个答案:

答案 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.text1android.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项时更改文本颜色。