我有一个简单的TableView,显示从网络下载的字符串列表。该列表非常大(约140k字符串)。使用AddRange并且什么都没有发生,但是如果我静态编码一个小的2项列表,它可以正常工作。ReactiveList.AddRange不适用于大集合
在视图模型代码reload命令:
public ReactiveCommand<List<string>> LoadItems { get; protected set; }
// Later, in the constructor...
LoadItems = ReactiveCommand.CreateAsyncObservable(_ => BlobCache.LocalMachine.GetAndFetchLatest(
client.ItemListKey,
client.FetchItemList));
LoadItems.Subscribe(list => {
ItemList.Clear();
ItemList.AddRange(list);
});
如果我将其更改为这样的事情,虽然,这实际上增加了细胞表视图:
LoadItems.Subscribe(list => {
Console.WriteLine(list.Count); // To see if it's working (it is)
var stuff = new List<string>() {
"Test item!"
};
ItemList.AddRange(stuff);
});
我的猜测是,我以非常低效的方式添加项目,而不是从AddRange调用返回。我是Rx/ReactiveUI/MVVM/all-this-cool-linq-stuff的新手,但前提非常棒。
什么是值得的 - 我试图在MonoTouch上做到这一点。
你明白了! https://github.com/reactiveui/ReactiveUI/issues/763 – 2014-11-24 12:58:46