我有一个简单的 TableView,它显示从网络下载的字符串列表。该列表非常大(约 140k 字符串)。使用 AddRange 并没有发生任何事情,但是如果我静态地编写一个小的 2 项列表,它工作正常。
视图模型中重新加载命令的代码:
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 上执行此操作。