Android -- PullToRefresh应用
PullToRefresh
支持ListView、ExpandableListView、GridView、WebView
下载地址:https://github.com/chrisbanes/Android-PullToRefresh
注意,若是要放到android studio中的话,需要在eclipse中以android studio工程的方式导出。
Code
布局:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".MyActivity">
- <com.handmark.pulltorefresh.library.PullToRefreshListView
- android:id="@+id/lv_main"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>
- </LinearLayout>
配置:
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_my);
- mList = new ArrayList<String>();
- for (int i = 0; i < mStr.length; i++) {
- mList.add(mStr[i]);
- }
- mListView = (PullToRefreshListView) findViewById(R.id.lv_main);
- // mListView.setOnRefreshListener(new MyRefreshListener());
- mListView.setOnRefreshListener(new MyRefreshListener2());
- mMyAdapter = new MyAdapter();
- mListView.setAdapter(mMyAdapter);
- mListView.setMode(PullToRefreshBase.Mode.BOTH);
- mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");
- mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));
- mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");
- mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");
- mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");
- }
PullToRefreshBase.Mode.BOTH指的是下拉和上拉刷新两张模式。
- class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {
- @Override
- public void onRefresh(PullToRefreshBase refreshView) {
- }
- }
- class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {
- @Override
- public void onPullDownToRefresh(PullToRefreshBase refreshView) {
- mList.clear();
- for (int i = 0; i < mStr.length; i++) {
- mList.add(mStr[i]);
- }
- new Thread(new MyRunnable()).start();
- }
- @Override
- public void onPullUpToRefresh(PullToRefreshBase refreshView) {
- for (int i = 0; i < mStr.length; i++) {
- mList.add(mStr[i]);
- }
- new Thread(new MyRunnable()).start();
- }
- }
这里有两个监听器,我们来简单说一下PullToRefreshBase.OnRefreshListener2 ,很明显,分别指的是一个是上拉,一个是下拉的刷新的回调。
- public class MyActivity extends Activity {
- private PullToRefreshListView mListView;//pulltorefresh控件
- private List<String> mList;//存放数据
- private String[] mStr = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"};//数据
- private MyAdapter mMyAdapter;//适配器
- //一个延时,然后处理
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 1:
- Log.i("handleMessage", "handleMessage");
- mListView.onRefreshComplete();
- mMyAdapter.notifyDataSetChanged();
- break;
- }
- }
- };
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_my);
- mList = new ArrayList<String>();//初始化
- for (int i = 0; i < mStr.length; i++) {
- mList.add(mStr[i]);//准备数据
- }
- mListView = (PullToRefreshListView) findViewById(R.id.lv_main);
- // mListView.setOnRefreshListener(new MyRefreshListener());
- mListView.setOnRefreshListener(new MyRefreshListener2());//设置监听器
- mMyAdapter = new MyAdapter();//初始化适配器
- mListView.setAdapter(mMyAdapter);
- mListView.setMode(PullToRefreshBase.Mode.BOTH);//模式为上拉和下拉
- mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");
- mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));//loading的时候的图片
- mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");
- mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");
- mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");
- }
- class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {
- @Override
- public void onRefresh(PullToRefreshBase refreshView) {
- }
- }
- class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {
- @Override
- public void onPullDownToRefresh(PullToRefreshBase refreshView) {
- mList.clear();
- for (int i = 0; i < mStr.length; i++) {//添加数据
- mList.add(mStr[i]);
- }
- new Thread(new MyRunnable()).start();//执行延时
- }
- @Override
- public void onPullUpToRefresh(PullToRefreshBase refreshView) {
- for (int i = 0; i < mStr.length; i++) {//添加数据
- mList.add(mStr[i]);
- }
- new Thread(new MyRunnable()).start();//执行延时
- }
- }
- class MyAdapter extends BaseAdapter {
- @Override
- public int getCount() {
- return mList.size();
- }
- @Override
- public Object getItem(int i) {
- return mList.get(i);
- }
- @Override
- public long getItemId(int i) {
- return i;
- }
- @Override
- public View getView(int i, View view, ViewGroup viewGroup) {
- if (view == null) {
- view = LayoutInflater.from(MyActivity.this).inflate(R.layout.item, null);
- TextView tv = (TextView) view.findViewById(R.id.txt);
- tv.setText(mList.get(i));
- } else {
- TextView tv = (TextView) view.findViewById(R.id.txt);
- tv.setText(mList.get(i));
- }
- return view;
- }
- }
- class MyRunnable implements Runnable {
- @Override
- public void run() {
- try {
- Thread.sleep(2000);//延时2s
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- Log.i("MyRunnable", "MyRunnable");
- mHandler.sendEmptyMessage(1);
- }
- }
- }
我是天王盖地虎的分割线
源代码:https://github.com/pinguo-yuyidong/Study_Demos/tree/master/PullToReFreshDemo
Android -- PullToRefresh应用的更多相关文章
- 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...
- Android PullToRefresh (GridView 下拉刷新上拉加载)
做这个需要自己去git hub上下载个pull-to-refresh 里面有个library为依赖包自己导到自己的项目中 (下载地址:https://github.com/chrisbanes/And ...
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...
- Android pulltorefresh使用
pulltorefresh插件可以轻松实现上拉下拉刷新,github.com上直接搜索进行下载. 布局文件: <RelativeLayout xmlns:android="http:/ ...
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 (转载)
最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...
- Android PullToRefresh下拉刷新控件的简单使用
PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...
- 【转】Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...
- Android PullToRefresh 下拉刷新,上拉很多其它,支持ScrollView,ListView,可方便拓展GridView,WebView等
在写着东西之前.从网上找到非常多这方面的源代码,可是基本没有找到惬意的.包含在GitHub上的比較有名的Android-PullToRefresh-master.思来想去还是自己写吧.当然当中借鉴了一 ...
- Android pulltorefresh引用遇到的一个问题
今天在使用pulltorefresh插件的时候遇到了一个让人头疼的问题,在Eclipse中导入要用到的library项目,然后新建一个项目引入Library,显示的是引入成功,如图 而且project ...
随机推荐
- python 乘法表、打印菱形
for i in range(1,10): print ' '.join(map(lambda x:"%d x %d = %d"%(x,i,i*x),range(1,i+1))) ...
- github下载项目
- [HDU6196]happy happy happy
题目大意: 有一个长度为n的数列,A和B两个人轮流从两端取数,B先取,A想使分数严格小于B且尽量接近B,问两人分数之差最小是多少. 思路: 折半搜索,先预处理出长度为part的最大差最小差,再预处理出 ...
- JBOSS集群和安装
JBOSS集群和安装 http://jijian91.com/blog20071010/jboss-cluster-part5.html http://wing123.iteye.com/blog/3 ...
- bzoj 1047 单调队列
做4次单调队列优化DP. /************************************************************** Problem: 1047 User: idy ...
- 读书笔记_Effective_C++_条款三十四:区分接口继承和实现继承
这个条款书上内容说的篇幅比较多,但其实思想并不复杂.只要能理解三句话即可,第一句话是:纯虚函数只继承接口:第二句话是:虚函数既继承接口,也提供了一份默认实现:第三句话是:普通函数既继承接口,也强制继承 ...
- 你的C/C++程序为什么无法运行?揭秘Segmentation fault (1)
什么让你对C/C++如此恐惧? 晦涩的语法?还是优秀IDE的欠缺? 我想那都不是问题,最多的可能是一个类似这样的错误: 段错误(Segmentation fault) 这是新手无法避免的错误,也是老手 ...
- 深入理解 Java中的 流 (Stream)
首先,流是什么? 流是个抽象的概念.是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行.设备能够是文件,网络,内存等. 流具有方向性,至于是输入 ...
- linux驱动移植的重要数据结构
转载:http://www.embeddedlinux.org.cn/html/jishuzixun/201304/14-2538.html 对于嵌入式 Linux 系统来说,有各种体系结构的处理器和 ...
- sql语句分组/排序/计算总数/连接等sql语句书写
1.什么是表连接? 答:比如两张表,要获取的信息来自两张表,就需要通过外键的形式进行两张表的连接.最后产后组合信息. 表连接是通过join连接的.表连接说白了就是产生一个大表.表连接也都是用于查询上的 ...