Android列表项重用

时间:2015-07-03 15:14:33

标签: android xamarin mvvmcross

我需要TextView,它会在文本更改时闪烁 - 所以我创建了像here中描述的CustomTextView。它工作得很好但我在列表项中设置CustomTextView时遇到问题。由于ListView项目正在被重用,我的CustomTextView在向上/向下滚动时会一直闪烁,因为它的上下文发生了变化,现在它“指向”另一个列表项。

问题是我不知道如何确定项目的上下文何时被更改,所以我不能把noFlash标志(CustomTextView的Text属性设置为null,所以我也不能使用它)

1 个答案:

答案 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
    }
}