Java 草率地适应奇怪的行为

Java 草率地适应奇怪的行为,java,android,listview,cursor,android-cursoradapter,Java,Android,Listview,Cursor,Android Cursoradapter,在我的应用程序中,我会显示一些信息,并根据值更改textView的颜色 public类DealsAdapter扩展游标适配器{ 私有游标mCursor; 私有上下文; 私人最终布局平面图; 公共DealsAdapter(上下文、游标){ super(上下文、游标、true); mInflater=LayoutInflater.from(上下文); mContext=上下文; } @凌驾 公共视图newView(上下文上下文、光标、视图组父对象){ 最终视图=最小平坦。充气(R.layout.de

在我的应用程序中,我会显示一些信息,并根据值更改textView的颜色

public类DealsAdapter扩展游标适配器{
私有游标mCursor;
私有上下文;
私人最终布局平面图;
公共DealsAdapter(上下文、游标){
super(上下文、游标、true);
mInflater=LayoutInflater.from(上下文);
mContext=上下文;
}
@凌驾
公共视图newView(上下文上下文、光标、视图组父对象){
最终视图=最小平坦。充气(R.layout.deals\u行,父级,false);
返回视图;
}
@凌驾
公共void bindView(视图行、上下文上下文、光标){
文本视图百分比=(TextView)row.findViewById(R.id.tvPercent);
percent.setText(游标)getString(游标
.getColumnIndex(DBHelper.D_百分比));
float percentV=cursor.getFloat(游标
.getColumnIndex(DBHelper.D_百分比);
如果(百分比V>=41&&percentV=71){
//绿色的
百分比.setTextColor(Color.parseColor(#17D11D));
}
}
问题是在我上下滚动后,颜色开始混合,但值保持不变

有什么建议吗


编辑:在xml中,我将颜色设置为红色,并仅在需要时进行更改。

如果
percentV<41
,则没有明确设置颜色。这意味着该项目将保留视图以前的任何颜色,从而产生不可预测的结果


这是因为每个项目的
视图
可能会因性能原因而重复使用。如果从屏幕顶部滚动一个项目,则相同的
视图
可能会用于屏幕底部出现的新项目,以节省每次膨胀新项目的成本。您必须在
bindView()中明确设置默认颜色
,否则,
视图将保留其包含的最后一项的任何颜色。

您必须检查百分比v是否小于41

if (percentV >= 41 && percentV <= 70) {
  // Orange
  percent.setTextColor(Color.parseColor("#F58549"));
} else if (percentV >= 71) {
  // Green
  percent.setTextColor(Color.parseColor("#17D11D"));
} else {
  // DEFAULT color (if percentV < 41)
  percent.setTextColor(DEFAULT COLOR);
}
if(percentV>=41&&percentV=71){
//绿色的
百分比.setTextColor(Color.parseColor(#17D11D));
}否则{
//默认颜色(如果百分比V<41)
百分比.setTextColor(默认颜色);
}

我将xml中的颜色设置为红色,仅在需要时更改。您不能这样做。ListView中的视图将被重用。如果您滚动屏幕顶部的一个项目,出于性能原因,相同的视图将用于屏幕底部出现的新项目。您必须在
bindView()中显式设置默认颜色
。哦,我忘了视图是重复使用的,现在可以使用了。谢谢。