在ListView中更改文本颜色

au7*_*789 1 android android-listview

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

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

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

Bri*_*ley 13

如果你查看simple_list_item_1的源代码,你会发现它只是一个TextView.来源是:

<sdk-dir>/platforms/<your-platform>/data/res/layout/simple_list_item_1
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是比simple_list_item_1更复杂的视图,则可以通过检查源来计算View上元素的id,然后在超类返回的View上调用findViewById.例如,two_line_list_item.xml拥有的IDS TextViews 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
}
Run Code Online (Sandbox Code Playgroud)