我正在使用Jeff Sharkey's SeparatedListAdapter,我想设置文字颜色,但我不确定如何。
为了给你一些关于他的适配器的背景知识,他将一个类似于简单Android列表的BaseAdapter子类化。所以,我尝试在这样的getView()
方法中设置文本颜色(你可以看到我在评论部分之间的尝试):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
int sectionnum = 0;
for(Object section : this.sections.keySet()) {
Adapter adapter = sections.get(section);
int size = adapter.getCount() + 1;
// check if position inside this section
if(position == 0) return headers.getView(sectionnum, convertView, parent);
if(position < size)
{
/***** I added this section to try to set the text color ***/
TextView captionTV = (TextView)adapter.getView(position, convertView, parent).findViewById(R.id.list_complex_caption);
captionTV.setTextColor(R.color.black;);
TextView titleTV = (TextView)adapter.getView(position, convertView, parent).findViewById(R.id.list_complex_title);
titleTV.setTextColor(R.color.black;);
/***** end add *****/
return adapter.getView(position - 1, convertView, parent);
}
// otherwise jump into next section
position -= size;
sectionnum++;
}
return null;
}
但是,它会为第一个单元格设置文本颜色,但不会为其余单元格设置文本颜色。
有什么想法吗?
答案 0 :(得分:1)
嗯。漂亮的适配器。
这里要注意的第一件事 - 以你正在做的方式修改View
是最好留给你在各个部分适配器中使用的布局,即如果你想要黑色文本,使用项目布局有黑色文字。
无论如何要在代码中执行此操作,不应在子节适配器上重复调用#getView(int, View, ViewGroup)
,而是这样做:
/**
* {@inheritDoc}
*/
public View getView(int position, View convertView, ViewGroup parent) {
int sectionnum = 0;
for(Object section : this.sections.keySet()) {
Adapter adapter = sections.get(section);
int size = adapter.getCount() + 1;
// check if position inside this section
if(position == 0) return headers.getView(sectionnum, convertView, parent);
if(position < size){
View view = adapter.getView(position - 1, convertView, parent);
TextView captionTV = (TextView) view.findViewById(R.id.list_complex_caption);
captionTV.setTextColor(R.color.black);
TextView titleTV = (TextView) view.findViewById(R.id.list_complex_title);
titleTV.setTextColor(R.color.black);
return view;
}
// otherwise jump into next section
position -= size;
sectionnum++;
}
return null;
}
答案 1 :(得分:0)
尝试在bindView中覆盖 bindView 函数,例如
@Override
public void bindView(View v, Context context, Cursor c) {
String name = c.getString(nameCol);
TextView captionTV = (TextView) v.findViewById(R.id.list_complex_caption);
captionTV.setTextColor(R.color.black);
}