我有一個簡單的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