在我的應用程序中,我顯示一些信息並根據值更改textView的顏色。CursorAdapter奇怪的行爲
public class DealsAdapter extends CursorAdapter {
private Cursor mCursor;
private Context mContext;
private final LayoutInflater mInflater;
public DealsAdapter(Context context, Cursor cursor) {
super(context, cursor, true);
mInflater = LayoutInflater.from(context);
mContext = context;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view = mInflater.inflate(R.layout.deals_row, parent, false);
return view;
}
@Override
public void bindView(View row, Context context, Cursor cursor) {
Text View percent = (TextView) row.findViewById(R.id.tvPercent);
percent.setText(cursor.getString(cursor
.getColumnIndex(DBHelper.D_PERCENT)));
float percentV = cursor.getFloat(cursor
.getColumnIndex(DBHelper.D_PERCENT));
if (percentV >= 41 && percentV <= 70) {
// Orange
percent.setTextColor(Color.parseColor("#F58549"));
} else if (percentV >= 71) {
// Green
percent.setTextColor(Color.parseColor("#17D11D"));
}
}
的問題是在我上下滾動的顏色開始變得混淆但值保持不變。
有什麼建議嗎?
編輯:在xml中,我將顏色設置爲紅色,只在需要時更改。
我在XML中的顏色設置爲紅色,只需要更改。 – 2012-04-03 15:44:33
你不能那樣做。 ListView中的視圖被重用。出於性能原因,如果您滾動屏幕頂部的一個項目,則會在屏幕底部出現的新項目使用相同的視圖。你必須在'bindView()'中明確地設置默認顏色。 – 2012-04-03 15:46:11
哦,我忘了視圖被重用,現在它的工作。謝謝。 – 2012-04-03 15:49:12