【发布时间】:2017-05-14 15:03:00
【问题描述】:
我有一个ListView,它有一个ArrayAdapter,它的信息来自
一个字符串数组。我尝试使用自定义适配器类,我必须覆盖 getView() 方法,在该方法中我还使用 ViewHolder 模式来完成我想要完成的工作。然而,这是一场噩梦,因为许多视图重复出现或根本没有显示,并且行都被打乱了。
我的ListView 及其适配器的实现现在要短得多。
但是,我想要完成的是ListView 的某些行将以红色显示文本,而另一些则以白色显示。将以红色显示的文本具有子字符串“R2”。请记住,此文本存储在适配器也有句柄的字符串数组中。好吧,这是我的代码,但我仍然无法在ListView 中显示具有红色子字符串“R2”的文本。
ArrayAdapter<String> adapter new ArrayAdapter<String>(context,
android.R.layout.simple_list_item_1,main_instructions);
listview.setAdapter(adapter);
for(int k = 0 ; k < list_layout.getChildCount(); k++){
String s = main_instrutions[k];
if(s.contains("R2")){
TextView v = (TextView) listview.getChildAt(k);
s = s.replaceAll("R2","");
v.setTypeface(Typeface.DEFAULT_BOLD);
v.setTextColor(Color.RED);
v.setText(s);
adapter.notifyDataSetChanged();
listview.invalidate();
}
我认为我的想法是正确的,但无法将这些特定行更改为 红色文本。如果有人有建议那就太好了。
谢谢
【问题讨论】:
-
尝试在适配器中这样做
-
发布你的适配器
-
你正在调用 adapter.notifyDataSetChanged();更改视图颜色后,您应该在 Adapter 类中执行此操作。