我需要TextView,它会在文本更改时闪烁 - 所以我创建了像here中描述的CustomTextView。它工作得很好但我在列表项中设置CustomTextView时遇到问题。由于ListView项目正在被重用,我的CustomTextView在向上/向下滚动时会一直闪烁,因为它的上下文发生了变化,现在它“指向”另一个列表项。
问题是我不知道如何确定项目的上下文何时被更改,所以我不能把noFlash标志(CustomTextView的Text属性设置为null,所以我也不能使用它)
答案 0 :(得分:0)
最后,我必须使用BindBindbleCode中的一些代码制作自定义适配器
protected override void BindBindableView(object source, IMvxListItemView viewToUse)
{
var newValue = source as ListItemVM;
var oldValue = viewToUse.DataContext as ListItemVM;
if (newValue.ItemID != oldValue.ItemID)
newValue.Rebinded = true;
base.BindBindableView(source, viewToUse);
}
然后我在CustomTextView上添加了NotLoaded属性并将这两个绑定在一起。因此,当Rebinded为true时,它将NotLoaded设置为true,表示未加载该TextView中的数据。如果未加载数据,则无需刷新CustomTextView背景。
public string AnimatingText
{
get { return Text; }
set
{
if (Text == value)
return;
if (NotLoaded)
{
Text = value;
NotLoaded = false;
return;
}
Text = value;
// Do your animation here
}
}