Android PullToRefresh下拉刷新控件的简单使用
PullToRefresh这个开源库早就听说了,不过一直没用过。作为一个经典的的开源库,我觉得还是有必要认识一下。
打开github上的网址:https://github.com/chrisbanes/Android-PullToRefresh
网页一打开就看到一个大大的提醒(说是该项目已经不再维护了):
不管怎样先下载下来再说:
下载解压后,打开文件夹如下图所示:
然后导入到工程,如下图所示:(其中的PullToRefreshListFragment和PullToRefreshViewPager在文件夹“extras”中)
如果在导入后PullToRefreshListFragment和PullToRefreshViewPager报错,可能是因为需要重新导入library包。如下图:
当导入的这三个工程没有任何错误后,新建一个Android工程来使用这个开源库。
新建的工程取名为“zhj_PullToRefresh”。
接着向工程中导入之前添加的三个包PullToRefreshListFragment,PullToRefreshViewPager,library。
倒入包后控制台可能会出现如下的错误:
这是因为新建的工程中的support-v4包与PullToRefreshListFragment,PullToRefreshViewPager中的support-v4包的版本不同导致的。
解决这个问题只需将“zhj_PullToRefresh”中的support-v4包复制到PullToRefreshListFragment,PullToRefreshViewPager中,并替换其原有的support-v4包,即可。
下面在新建的工程中开始敲代码了:
首先是布局文件main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</com.handmark.pulltorefresh.library.PullToRefreshListView> </LinearLayout>
然后是MainActivity(代码也很少,比较简单):
public class MainActivity extends Activity { PullToRefreshListView lv;
private ArrayAdapter<String> adapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv=(PullToRefreshListView) findViewById(R.id.pull_listview);//获取该控件
List<String> list=new ArrayList<String>();
list.add("四川托普");
list.add("上海托普");
//简易的设置适配器
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
lv.setAdapter(adapter);
//对刷新控件实现监听,如果不监听就无法出现“下拉刷新”的字样
lv.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
//这里用异步任务来模拟从网络上获取数据
new AsyncTask<Void, Void, Void>() { @Override
protected Void doInBackground(Void... arg0) {
try {
Thread.sleep(3000);//线程休眠
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} protected void onPostExecute(Void result) {
//添加新的数据
adapter.addAll("新添加的数据","新添加的数据");
lv.onRefreshComplete();
};
}.execute(); }
});
} }
运行效果如下:
这个确实比较简单就不附上Demo了。
ps:今年谷歌官方出了一个新的下拉刷新控件,叫SwipeRefreshLayout。SwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到19.1。具体的大家官方去看看吧。效果如下:
Android PullToRefresh下拉刷新控件的简单使用的更多相关文章
- android官方下拉刷新控件SwipeRefreshLayout的使用
可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...
- Android 解决下拉刷新控件和ScrollVIew的滑动冲突问题。
最近项目要实现ScrollView中嵌套广告轮播图+RecyleView卡片布局,并且RecyleView按照header和内容的排列样式,因为RecyleView的可扩展性很强,所以我毫无疑问的选择 ...
- 【转】Android官方下拉刷新控件 SwipeRefreshLayout
今天在Google+上看到了SwipeRefreshLayout这个名词,遂搜索了下,发现竟然是刚刚google更新sdk新增加的一个widget,于是赶紧抢先体验学习下. SwipeRefreshL ...
- Android解决下拉刷新控件SwipeRefreshLayout和ViewPager的滑动冲突
直接说明下我自己项目中的情况,如图: 外部嵌套任何一种refresh下拉控件之后,上方的viewpager左右滑动事件都受到影响,滑动不流畅,稍微有点向下的趋势就会触发刷新. 起初以为可能跟不同下拉控 ...
- Android下拉刷新控件--PullToRefresh的简单使用
Android中很多时候都会用到上下拉刷新,这是一个很常用的功能,Android的v4包中也为我们提供了一种原生的下拉刷新控件--SwipeRefreshLayout,可以用它实现一个简洁的刷新效果, ...
- Android仿苹果版QQ下拉刷新实现(一) ——打造简单平滑的通用下拉刷新控件
前言: 忙完了结婚乐APP的开发,终于可以花一定的时间放在博客上了.好了,废话不多说,今天我们要带来的效果是苹果版本的QQ下拉刷新.首先看一下目标效果以及demo效果: 因为此效果实现的步骤 ...
- [Android]下拉刷新控件RefreshableView的实现
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4172483.html 需求:自定义一个ViewGroup,实现 ...
- android SwipeRefreshLayout google官方下拉刷新控件
下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24521483 下面App基本都有下拉刷新的功能,以前基本都使用XListView ...
随机推荐
- R语言聚类方法&主要软件包-K-means
主要4中软件包 stas:主要包含基本统计函数. cluster:用于聚类分析. fpc:含聚类算法函数(固定聚类.线性回归聚类等). mclust:处理高斯分布混合模型,通过EM算法实现聚类.分类及 ...
- PHP linux spl_autoload_register区分大小写
一个PHP脚本用到spl_autoload_register,在WINDOWS下运行正常,但在LINUX就include不了,后来发现WINDOWS大小写不敏感,而在LINUX下区分大小写,WINDO ...
- sgu - 269 - Rooks
题意:给出一个n行的棋盘,每行的长度任意,问在该棋盘中放k个车(不能同行或者同列)有多少种放法(n <= 250, 每行的长度 <= 250). 题目链接:http://acm.sgu.r ...
- VLAN设置
A Logical Network is a way of representing networks in your datacenter that have the same connectivi ...
- java中匿名类的讲解
匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象 ...
- 【M2】最好使用C++转型操作符
1.C语言中的转型操作符有两个问题: a.是个通用的转换操作符,也就是说,可以从一个类型转换到其他类型.通用必定是低效率和冗余的,因为要考虑很多情况. b.在代码中,难以辨认出哪些是类型转换. 2.C ...
- 【M26】限制某个class所能产生的对象数量
1.每当产生一个对象,必定调用构造方法.因此,禁止产生对象的做法就是,将所有的构造方法声明为private. 2.只有在类的内部才可以访问private成员,有两层含义:在类的内部可以访问this的p ...
- Codeforces Round #330 (Div. 1) A. Warrior and Archer 贪心 数学
A. Warrior and Archer Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/594 ...
- 一个不错的JavaScript解析浏览器路径方法(转)
JavaScript中有时需要用到当前的请求路径等涉及到url的情况,正常情况下我们可以使用location对象来获取我们需要的信息,本文从另外一个途径来解决这个问题,而且更加巧妙 方法如下: fun ...
- 图的深度优先搜索算法DFS
1.问题描写叙述与理解 深度优先搜索(Depth First Search.DFS)所遵循的策略.如同其名称所云.是在图中尽可能"更深"地进行搜索. 在深度优先搜索中,对最新发现的 ...