NotifyItemRemoved
只有
将其从显示中移除(如果显示或在其视图缓存中),并导致其他屏幕元素/视图的移动(动画),您还需要从适配器中实际移除备份数据,无论您如何存储它。
举个例子,我有一个
RecyclerView.Adapter
将其数据存储为
ObservableCollection<SomeClass>
在一个名为
myDataCollection
在适配器中。
在适配器的初始化过程中
.ator
对我来说),我注册了
CollectionChanged
网上活动
ObservableCollection
我传递给构造函数,即:
myDataCollection.CollectionChanged += CollectionChanged;
我的适配器子类中的事件定义为:
void CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
NotifyItemRangeInserted(e.NewStartingIndex, e.NewItems.Count);
break;
case NotifyCollectionChangedAction.Remove:
NotifyItemRangeRemoved(e.OldStartingIndex, e.OldItems.Count);
break;
case NotifyCollectionChangedAction.Move:
NotifyItemMoved(e.OldStartingIndex, e.NewStartingIndex);
break;
case NotifyCollectionChangedAction.Replace:
case NotifyCollectionChangedAction.Reset:
NotifyAll();
break;
}
}
现在只要我改变一下
可观测收集
,适配器将收到更改通知并更新
RecyclerView
就是这样。
所以现在你可以更改添加/删除/移动到
只是
这个
可观测收集
还有
回收视图
是“自动神奇”更新。
如果你最终使用
Filter
在适配器中实现搜索功能
回收视图
.
注意:这不会更新RecyclerView中的膨胀视图,如果
可观测收集
改变,但这可以通过
PropertyChangedEventHandler
在你的物品上如果需要。。。