Xamarin.Android之下拉刷新

一、前言

当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果。

 

二、准备工作

我们的下拉刷新可不是全手工自己实现,而是利用了第三方的库,大家可以选择任何一种方式进行下载:

1.Github下载(源码)

2.百度网盘(源码+笔者的DEMO)

 

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,当然第三方支持比较有限,现在只能支持ListViewGridViewExpandableListView以及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入口)实现的下拉效果图:

 

 

在满足必要的经济的条件下,研究更佳高深的技术.满足自己的野心
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值