我正在使用無限滾動的UICollectionView綁定到ViewModel中的自定義ObservableCollection。單元格只有一個UITextView,它是模型對象中的字符串屬性的數據綁定。防止可見的UICollectionView單元格閃爍
當我開始向下滾動時,我通過調用OservableCollection上的AddRange來顯示更多的項目。
public class MyCollection<T> : ObservableCollection<T>
{
public MyCollection()
: base()
{
}
public MyCollection(IEnumerable<T> collection)
: base(collection)
{
}
public MyCollection(List<T> list)
: base(list)
{
}
public void AddRange(IEnumerable<T> range)
{
foreach (var item in range)
{
Items.Add(item);
}
var dispatcher = Mvx.Resolve<IMvxMainThreadDispatcher>();
dispatcher.RequestMainThreadAction(() =>
{
this.OnPropertyChanged(new PropertyChangedEventArgs("Count"));
this.OnPropertyChanged(new PropertyChangedEventArgs("Item[]"));
this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, range));
});
}
}
新的項目被成功添加,但是一旦從通知改變事件重新加載的CollectionView get's可見電池項目可能會閃爍,並顯示一秒鐘錯誤的數據。將更多數據加載到UICollectionView時,是否可以防止可見單元閃爍?
你重新加載整個的CollectionView?不要這樣做。只需添加新聞單元 – Paulw11
@ Paulw11感謝您的建議。是的,我認爲propertyChangeEvent觸發器重新加載整個collectionview。你知道我只能觸發不可見的新細胞重新加載嗎?我可以調用collectionView.ReloadItems(indexPaths []),但我不知道如何檢索新項目的索引路徑。 – doorman