我有一个ListView,每个运行时都有不同的条目数(正常 - >取决于用户)
我阅读了一篇帖子来更改适配器getView()
中TextView的颜色。
它运作良好,如果我不滚动 - >然后有更多彩色条目......!
我只想要 ONE 。
我试图只更改一个特定行,而不是其他行。其他人有正确的颜色'。
listview_otherSubnets.setAdapter(new ArrayAdapter<String>(this, R.layout.networks_list_item, list) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=super.getView(position, convertView, parent);
TextView textView=(TextView) view.findViewById(R.id.networkslistitem);
//index_network specifies the specific network row
/*YOUR CHOICE OF COLOR*/
if(index_network==-1) {//get the error entry
//always one entry and if calculation above is not correct then there would be an error text in the TextView
textView.setTextColor(Color.parseColor("#ff4444"));
textView.setTypeface(null, Typeface.BOLD);
}
if(index_network!=-1 && index_network==position){//get the specific one
Log.i("OtherSubnet", "Adapter Current Network");
textView.setTextColor(Color.parseColor("#33b5e5"));
textView.setTypeface(null, Typeface.BOLD);
}
//otherwise default color (from the xml) -> see image
view.setClickable(false);
return view;
}
});
滚动后 (无错误消息)
正确的是:只有一行
是否可以获取TextView
的文字,如果它在第一次运行时?是应该设置的文字?
我试过,我有例外。
答案 0 :(得分:1)
适配器类的设计方式是,滚动视图将被重用,但不会再次创建。滚动后的彩色文本视图将被重复使用,因此其他一些元素将被着色。如果你再次流口水,会有更多的彩色元素。这就是为什么你必须用所需的颜色为标记的元素着色,并用正常的颜色为所有其他元素着色。
listview_otherSubnets.setAdapter(new ArrayAdapter<String>(this, R.layout.networks_list_item, list) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=super.getView(position, convertView, parent);
TextView textView=(TextView) view.findViewById(R.id.networkslistitem);
if(index_network==position){
Log.i("OtherSubnet", "Adapter Current Network");
textView.setTextColor(Color.parseColor("#33b5e5"));
textView.setTypeface(null, Typeface.BOLD);
} else {
textView.setTextColor(Color.parseColor("#ff4444"));
textView.setTypeface(null, Typeface.BOLD);
}
view.setClickable(false);
return view;
}
});
答案 1 :(得分:0)
您必须再添加一个条件,将颜色设置为其他条件。
if(index_network!=-1 && index_network!=position){//get the specific one Log.i("OtherSubnet", "Adapter Current Network"); textView.setTextColor(Color.parseColor("#Something else")); textView.setTypeface(null, Typeface.BOLD); }