我对 a 有一些问题ListView
(这更像是一个视觉问题),它会记住来自TextViews
、ListView
行的文本值等数据,但会混淆或忘记有关TextViews
背景颜色的方面。仅当ListView
包含许多行时才会出现问题。我使用 aSimpleCursorAdapter
和 aViewBinder
并希望在TextView
出现条件时突出显示 a:
在ViewBinder
实施中:
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
CharSequence display;
if(view.getId() == R.id.dueDate){
long timestamp = Long.parseLong(cursor.getString(3));
display=DateUtils.getRelativeTimeSpanString(timestamp);
if(timestamp+DaysToMillis(5)> new Date().getTime())
((TextView) view).setBackgroundResource(R.color.marker_red);
((TextView) view).setText(display);
return true;
}
else
return false;
}
再说一遍:当有很多行时,ListView
似乎会混淆背景颜色。有时当我重新滚动时,它再次改变了TextView
' 的背景,我似乎无法找到错误或ListView
' 的逻辑。
那么,setViewValue(..)
每次在对一行进行充气之前都会调用该方法吗?即使您向上或向下滚动并且不再可见的行再次可见?或者该setViewValue(..)
方法仅在初始行膨胀过程中调用,然后创建的对象保存在ListView
的内存中?
PS 相同的文本值TextView
显示正确。setViewValue(..)
我在相同的方法中使用了相同的逻辑。