`
rensanning
  • 浏览: 3553355 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38235
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607654
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682844
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89572
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:402165
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69772
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91866
社区版块
存档分类
最新评论

Android UI列表的上拉下拉刷新之Android-PullToRefresh

 
阅读更多
Library下载地址:
https://github.com/chrisbanes/Android-PullToRefresh

版本:Android-PullToRefresh-2.1.1

(1) 设置Listview
layout文件中定义PullToRefreshListView

<com.handmark.pulltorefresh.library.PullToRefreshListView
    android:id="@+id/list_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />


(2)设置Mode

PullToRefreshListView mListView = (PullToRefreshListView) findViewById(R.id.list_view);
mListView.setMode(Mode.BOTH);


  • Mode.BOTH:同时支持上拉下拉
  • Mode.PULL_FROM_START:只支持下拉Pulling Down
  • Mode.PULL_FROM_END:只支持上拉Pulling Up


(3)实现Listener

如果Mode设置成Mode.BOTH,需要设置刷新Listener为OnRefreshListener2,并实现onPullDownToRefresh()、onPullUpToRefresh()两个方法。

如果Mode设置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要设置刷新Listener为OnRefreshListener,同时实现onRefresh()方法。当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法,Mode.PULL_FROM的时候只调用onPullUpToRefresh()方法.

(4)举例
public class MainActivity extends Activity {
	
	private ArrayList<String> mListItems;
    private PullToRefreshListView mListView;
    private SampleListAdapter mAdapter;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample);
        
        // 设置初期数据
        mListItems = new ArrayList<String>();
    	for (int i = 1; i <= 10; i++) {
    		mListItems.add("Item " + Integer.toString(i));
    	}

        // 设置ListView
        mListView = (PullToRefreshListView) findViewById(R.id.list_view);
        mAdapter = new SampleListAdapter();
        mListView.setAdapter(mAdapter);
        
        // 设置PullToRefresh
        mListView.setMode(Mode.BOTH);
        mListView.setOnRefreshListener(new OnRefreshListener2<ListView>(){
 
        	// 下拉Pulling Down
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
            	// 下拉的时候数据重置
                mListItems = new ArrayList<String>();
            	for (int i = 1; i <= 10; i++) {
            		mListItems.add("Item " + Integer.toString(i));
            	}
            	mAdapter.notifyDataSetChanged();
            	
                new FinishRefresh().execute();
            }
            
            // 上拉Pulling Up
            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
            	// 上拉的时候添加选项
                int count = mListItems.size();
                mListItems.add("Item " + Integer.toString(++count));
                mAdapter.notifyDataSetChanged();
                
                new FinishRefresh().execute();
            }
 
        });
        
    }
    
    private class SampleListAdapter extends BaseAdapter {
    	 
        @Override
        public int getCount() {
            return mListItems.size();
        }
 
        @Override
        public Object getItem(int index) {
            return mListItems.get(index);
        }
 
        @Override
        public long getItemId(int index) {
            return index;
        }
 
        @Override
        public View getView(int index, View view, ViewGroup arg2) {
            if(view == null){
                LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = inflater.inflate(R.layout.list_item, null);
            }
            TextView textView = (TextView)view.findViewById(R.id.listItemText);
            textView.setText(mListItems.get(index));
            return view;
        }
    }
 
    private class FinishRefresh extends AsyncTask<Void, Void, Void>{
        @Override
        protected Void doInBackground(Void... params) {
            return null;
        }
 
        @Override
        protected void onPostExecute(Void result){
            mListView.onRefreshComplete();
        }
    }
}


初期:


上拉:


上拉后:


下拉:


下拉后:

  • 大小: 41.1 KB
  • 大小: 38.6 KB
  • 大小: 42.1 KB
  • 大小: 43.6 KB
  • 大小: 41.5 KB
分享到:
评论
9 楼 diskdj 2015-03-04  
diskdj 写道

Android-PullToRefresh-master\library

No projects are found to import

已经解决
8 楼 diskdj 2015-03-04  

Android-PullToRefresh-master\library

No projects are found to import
7 楼 rensanning 2015-02-06  
@好事DOMO 
6 楼 好事DOMO 2015-02-06  
使用Eclipse而不会导入第3方源码的同学,请做一下操作:
1、根据博主的连接下载 Library。zip,解压
2、右键点击 PullToRefreshSample (博主的项目),选择 Exsiting Android Code Into Workspace
3、选择解压后的 Library。zip 文件夹后,点击Finish。
5 楼 rensanning 2015-01-15  
@lokalswimmer 这里只是想简单的演示这个开源代码能够实现的效果,开源代码会不断的功能更新,如果想活用它,做好的方法是看懂它的API,或者阅读它提供的文档。引用第三方lib的方法google一下有很多详细的文章。

@wgd12389 这里只是个例子来演示效果,真正开发的话也不会去清除list,而是获取新的数据append到List的头部或者有其他的业务需求。不用太在意测试代码的细节,重在理解它能实现及如何实现的这种效果。
4 楼 wgd12389 2015-01-15  
楼主在下拉刷新处理的时候有个问题
mListItems = new ArrayList<String>();
这句话应该变成
mListItems.clear(); 
如果是吧数据源new的话会产生新的实例,在你下拉刷新后,通知线程去刷新ui,数据适配源其实还是原来的数据适配源,只不过mListItems 产生了新的实例,指向了新的地址
所以你下拉刷新就不会生效,对ui刷新不会起到任何作用
3 楼 lokalswimmer 2015-01-13  
源代码引用这三个library,包含错误,都不知道怎么解决
2 楼 lokalswimmer 2015-01-13  
有时候,我觉得看博客不如看demo源码,再跑回来看博客,很多东西就通了
1 楼 小桔子 2014-12-04  
就是这个Library不会处理。。。

相关推荐

    下拉上拉刷新Android-PullToRefresh-1.2.1.zip

    在Android开发中,为了提升用户体验,下拉刷新和上拉加载更多的功能已经成为了许多应用的标准配置。Android-PullToRefresh-1.2.1是一个专门为Android设计的开源库,用于实现这种交互效果。本文将深入探讨该库的工作...

    安卓下拉上拉刷新相关-PullToRefresh下拉刷新详细注释版.rar

    总之,"PullToRefresh下拉刷新详细注释版.rar"是一个用于研究和实践Android下拉刷新功能的宝贵资料,通过深入研究其中的代码,开发者可以提升自己在Android UI交互设计和数据加载优化方面的技能。

    android-pulltorefresh-master

    "android-pulltorefresh-master"是一个专门为Android平台设计的开源库,它允许开发者实现自定义UI的下拉刷新功能。下面我们将深入探讨这个库的核心知识点及其在实际应用中的使用方法。 首先,下拉刷新的基本工作...

    Android-PullToRefresh-master简单使用

    "Android-PullToRefresh-master"是一个开源库,它提供了这种功能,使得开发者可以方便地在自己的应用中集成下拉刷新和上拉加载更多的功能。下面将详细介绍这个库的使用方法以及相关知识点。 **一、下拉刷新机制** ...

    android PullToRefresh 上拉下拉刷新(绝对好货)

    本文将深入探讨如何在Android项目中实现"PullToRefresh",即上拉下拉刷新功能。 首先,我们要了解的是`Android-PullToRefresh`库。这是一个开源项目,专为Android平台设计,用于实现上拉下拉刷新效果。这个库提供了...

    Android listView下拉刷新上拉刷新带阻尼效果-IT计算机-毕业设计.zip

    综上所述,这个"Android listView下拉刷新上拉刷新带阻尼效果"的源码Demo是学习Android开发,特别是UI交互和数据加载机制的好资料。通过研究这个项目,开发者可以掌握如何在Android应用中实现流畅的用户交互,并提高...

    pulltorefresh上拉加载下拉刷新

    标题中的“PullToRefresh”通常指的是Android和iOS应用开发中的一种常见交互设计,即“上拉加载/下拉刷新”功能。这个功能允许用户通过在屏幕底部向上滑动(上拉加载更多内容)或在顶部向下滑动(下拉刷新当前内容)...

    Android PullToRefresh 各类页面下拉刷新

    在Android应用开发中,"下拉刷新"是一种常见的交互设计,允许用户通过在屏幕上向下拉动来更新内容。这种功能在新闻、社交媒体和其他需要实时数据更新的应用中尤其常见。本篇文章将详细探讨Android中的PullToRefresh...

    Android-PullToRefresh下拉刷新经典

    在Android应用开发中,"下拉刷新"是一个常见的功能,特别是在列表或网格视图中,用户可以通过下拉操作来更新内容。"Android-PullToRefresh"是一个经典的库,专门用于实现这种交互效果。这个库使得开发者能够轻松地将...

    安卓下拉上拉刷新相关-Android--滚动条下拉反弹的效果安卓开发UI特效.rar

    在安卓应用开发中,UI特效是提升用户体验的关键因素之一,其中下拉上拉刷新功能已经成为了许多应用的标准配置。这个压缩包文件“Android -- 滚动条下拉反弹的效果【安卓开发UI特效】”主要关注的就是这一特性,旨在...

    Android-PullToRefresh开源项目的使用方法及案例

    Android-PullToRefresh是一个开源项目,为开发者提供了简单易用的下拉刷新和上拉加载更多的功能。下面我们将详细探讨这个开源库的使用方法和相关案例。 首先,要使用Android-PullToRefresh,你需要将该项目的依赖...

    Android高级应用源码-PullToRefresh下拉刷新详细注释版.zip

    在Android开发中,PullToRefresh(下拉刷新)是一种常见的用户界面交互模式,它允许用户通过在列表顶部向下拉动来刷新列表内容。这个压缩包"Android高级应用源码-PullToRefresh下拉刷新详细注释版.zip"包含了实现这...

    Android-PullToRefresh-master.zip_DEMO_下拉刷新上拉加载的库文件

    这个名为"Android-PullToRefresh-master.zip_DEMO_下拉刷新上拉加载的库文件"的压缩包提供了一个用于实现这种功能的示例代码库。下面我们将深入探讨下拉刷新和上拉加载的概念、它们的工作原理以及如何在Android应用...

    Android应用源码之PullToRefresh下拉刷新详细注释版.zip

    这个压缩包"Android应用源码之PullToRefresh下拉刷新详细注释版.zip"包含了实现这一功能的源代码,并且带有详细的注释,方便开发者理解和学习。 首先,我们来看看`GitOnWay-PullToRefresh`目录,这很可能是一个完整...

    android自定义下拉刷新上拉加载

    在Android应用开发中,"下拉刷新"和"上拉加载"是常见的功能,用于提供流畅的用户体验,尤其是在处理大量数据列表时。本教程将详细讲解如何在Android中实现自定义的下拉刷新和上拉加载功能。 首先,我们要了解这两个...

    安卓下拉刷新,上拉加载框架

    在Android应用开发中,下拉刷新和上拉加载更多功能是常见的UI交互设计,用于提升用户体验,让用户能够方便地获取最新或更多的数据。本篇将详细介绍一个专为Android设计的下拉刷新和上拉加载框架——Android-...

    Ultra-PullToRefresh下拉刷新自定义

    在Android应用开发中,下拉刷新(PullToRefresh)是一种常见的功能,允许用户通过下拉列表来刷新数据。"Ultra-PullToRefresh"是一个专为Android设计的强大的下拉刷新库,它提供了丰富的自定义选项,使开发者可以轻松...

    Android-PullToRefresh-master

    "Android-PullToRefresh-master"是一个专门为Android应用程序实现下拉刷新和上拉加载功能的开源库。这个库使得开发者能够轻松地将这种功能集成到ListView、ScrollView、GridView等滚动视图中,为用户提供更加直观和...

Global site tag (gtag.js) - Google Analytics