MVVMCross:如何制作无限滚动视图并下推刷新视图?

Posted

技术标签:

【中文标题】MVVMCross:如何制作无限滚动视图并下推刷新视图?【英文标题】:MVVMCross: How to make a infinite scroll view and push down to refresh view? 【发布时间】:2013-09-16 07:01:30 【问题描述】:

我已经阅读了 Stuart 的 N+1 视频和其他一些教程。但是它们似乎都没有涵盖如何实现无限滚动列表或下推刷新列表。

我认为它们在移动应用中很常见。谁能解释一下如何做到这一点?

编辑: 具体如何在 androidios 上使用 MVVMCross 实现它

【问题讨论】:

【参考方案1】:

我写了一篇关于如何在 Android、iOS 和 Windows 中使用 MvvmCross 实现无限滚动的概述,可以在这里找到:http://www.sequence.co.uk/blog/infinite-scrolling-using-mvvmcross-and-xamarin

【讨论】:

【参考方案2】:

无限滚动和下拉刷新等功能是本机平台功能。它们将在每个平台上以相同的方式实现,就像没有 MvvmCross 一样。然后,您需要在您的自定义控件中使用一个工具来处理数据绑定。

如果这有任何帮助,Monotouch.Dialog 已经支持拉动刷新。看看这个https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/Sample/DemoRefresh.cs

【讨论】:

github.com/slodge/MvvmCross-Tutorials/tree/master/… 中有此类事物的“旧方式”(ios6 之前)的样本。对于 ios6 及更高版本,另请参阅motzcod.es/post/59125989518/mvxuirefreshcontrol-for-mvvmcross【参考方案3】:

我即将面临同样的挑战,我想到的实现是在我的 ViewModel 上创建一个名为 LoadMore() 的方法,然后在适当的时候从我的视图中调用它。

在 Android 上,我想这可以通过在 MvxListView 中添加一个 IOnScrollListener 并像 this answer 中提到的那样实现它。

如果 LoadMore() 正在添加到我的 ObservableCollection 项目中,我希望 ListView 能够通过我的绑定来获取这些项目。

我会在我试过后立即告诉你这是否有效 ;-)

【讨论】:

哦,对不起,我完全忘记了这篇文章。我实际上已经在 iOS 和 Android 平台上完成了它。你的虽然很接近。有两种基本方法。第一个是检测当前正在查看的项目的位置并将其与列表大小进行比较。如果它接近尾声,则将更多项目添加到列表中。另一种方法是检测是否显示页脚视图以确定是否已到达底部。稍后有机会我会发布更多详细信息。这是无限滚动的。至于下拉刷新,可以关注下方Staurt的评论。

以上是关于MVVMCross:如何制作无限滚动视图并下推刷新视图?的主要内容,如果未能解决你的问题,请参考以下文章

notifyDataSetChanged()使列表刷新并滚动回到顶部

notifyDataSetChanged() 使列表刷新并滚动跳回顶部

UIScrollView 无限滚动不分页

如何在 mvvmcross 视图模型中使用异步?

如何在无限滚动中重新加载脚本

如何同步无限的 UIScrollView?