我有一个要在ListView
中使用的行的布局。布局包含大约八个TextViews
。
如果一行代表“A”类型的数据,我希望它具有所有TextViews
的浅灰色字体颜色的红色背景。如果数据类型为“B”,我希望背景颜色为绿色,字体颜色为黑色。
现在,我有一个自定义ListAdapter
,并且在getView()
方法中,我正在以编程方式更改每个TextView
的字体颜色,但这非常繁琐。
我考虑过为“A”和“B”定义样式,但似乎没有办法以编程方式应用样式(即它只能在XML布局中静态完成)。
我还考虑过为“A”和“B”设置不同的布局,但我不想在两个XML文件中有重复的代码。
有关更好方法的任何想法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
我无法找到一个体面的方式来做到这一点。幸运的是,我正在使用Butter Knife库,可以使用查看组功能:
您可以将多个视图分组到列表或数组中。
@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name }) List<TextView> nameViews;
Action和Setter接口允许指定简单行为。
static final ButterKnife.Setter<TextView, Integer> SET_COLOR = new ButterKnife.Setter<TextView, Integer>() {
@Override
public void set(TextView view, Integer value, int index) {
view.setTextColor(value);
}
};
apply方法允许您一次对列表中的所有视图执行操作。
ButterKnife.apply(nameViews, SET_COLOR, ContextCompat.getColor(getContext(), android.R.color.primary_text_light));