Xamarin.Android之下拉刷新
2014-11-10 14:53 y-z-f 阅读(5140) 评论(6) 编辑 收藏 举报一、前言
当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果。
二、准备工作
我们的下拉刷新可不是全手工自己实现,而是利用了第三方的库,大家可以选择任何一种方式进行下载:
PS:如果读者选择从Github上下载需要修改引用的文件,将源码的v4删掉,重新引用新的v4。
三、正文
该下拉刷新并不同于官方的下拉刷新DEMO,官方采用的是利用ActionBar呈现刷新状态的,但是我们正常使用的App都是通过下拉呼出下拉刷新,而该第三方下拉刷新需要我们修改layout下的axml文件才能正常使用,比如我们需要ListView支持下拉刷新就需要按照如下的方式修改axml文件:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent"> 6 <PullToRefresharp.Android.Views.ViewWrapper 7 android:layout_width="fill_parent" 8 android:layout_height="fill_parent"> 9 <PullToRefresharp.Android.Widget.ListView 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:id="@+id/listview1" /> 13 </PullToRefresharp.Android.Views.ViewWrapper> 14 </LinearLayout>
其中ViewWrapper是必须的,它的子控件ListView可不是系统自带的那个控件,我们必须使用自带的,当然读者不需要担心它跟系统自带的ListView有什么区别,实质上第三方就是继承自ListView,当然第三方支持比较有限,现在只能支持ListView、GridView、ExpandableListView以及ScrollView。
接着我们回到MainActivity.cs中,写入如下的代码,监听ListView的RefreshActivated事件,并且模拟加载延迟然后调用ListView的OnRefreshCompleted方法完成加载:
1 protected override void OnCreate(Bundle bundle) 2 { 3 base.OnCreate(bundle); 4 SetContentView(Resource.Layout.Main); 5 6 lv = FindViewById<PullToRefresharp.Android.Widget.ListView>(Resource.Id.listview1); 7 lv.Adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, ITEMS); 8 lv.RefreshActivated += (e,s) => 9 { 10 Task.Factory.StartNew(() => 11 { 12 Thread.Sleep(1000); 13 RunOnUiThread(() => 14 { 15 lv.OnRefreshCompleted(); 16 }); 17 }); 18 }; 19 }
其中ITEMS的内容如下所示:
1 private static string[] ITEMS = new string[] {"Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam","Abondance", "Ackawi", "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu","Airag", "Airedale", "Aisy Cendre", "Allgauer Emmentaler", "Abbaye de Belloc","Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi", "Acorn", "Adelost","Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre","Allgauer Emmentaler"};
然后一个简单的下拉刷新就完成了,我们来看看我们的成果吧:
如果读者需要自定义这部分只需要在ViewWrapper与ListView之间添加一个LinearLayout控件,里面写上自定义的内容即可,当然这其中的各种动画效果自然也要自己实现了,笔者这里就不详细介绍了,作为福利,再给大家看看官方采用ActionBar(Github入口)实现的下拉效果图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?