Android 列表项重用

Android list item reuse

我需要在文本更改时闪烁的 TextView - 所以我制作了 CustomTextView,如 here 中所述。它工作得很好,但是当我在列表项中设置 CustomTextView 时遇到问题。由于 ListView 项目被重复使用,我的 CustomTextView 在滚动时一直闪烁 up/down 因为它的上下文发生了变化,现在它 'points' 到另一个列表项目。

问题是我不知道如何确定项目的上下文何时更改,所以我无法放置 noFlash 标志(CustomTextView 的文本 属性 未设置为 null,因此我无法使用它要么)

最后我不得不使用 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
    }
}