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应用的更多相关文章

  1. 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...

  2. Android PullToRefresh (GridView 下拉刷新上拉加载)

    做这个需要自己去git hub上下载个pull-to-refresh 里面有个library为依赖包自己导到自己的项目中 (下载地址:https://github.com/chrisbanes/And ...

  3. Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...

  4. Android pulltorefresh使用

    pulltorefresh插件可以轻松实现上拉下拉刷新,github.com上直接搜索进行下载. 布局文件: <RelativeLayout xmlns:android="http:/ ...

  5. Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 (转载)

    最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...

  6. Android PullToRefresh下拉刷新控件的简单使用

    PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...

  7. 【转】Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...

  8. Android PullToRefresh 下拉刷新,上拉很多其它,支持ScrollView,ListView,可方便拓展GridView,WebView等

    在写着东西之前.从网上找到非常多这方面的源代码,可是基本没有找到惬意的.包含在GitHub上的比較有名的Android-PullToRefresh-master.思来想去还是自己写吧.当然当中借鉴了一 ...

  9. Android pulltorefresh引用遇到的一个问题

    今天在使用pulltorefresh插件的时候遇到了一个让人头疼的问题,在Eclipse中导入要用到的library项目,然后新建一个项目引入Library,显示的是引入成功,如图 而且project ...

随机推荐

  1. Ajax与传统Web开发的区别

    基本概念 1.1,Ajax AJAX:即“Asynchronous Javascript And XML”(异步的JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,尤其是在一种 ...

  2. Ubuntu 16.04 64位 tftp服务器搭建

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务 ...

  3. python opencv3 显示一张图片

    git:https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 显示一张图像 ...

  4. django导出excel

    # coding:utf-8 from django.http import HttpResponse from xlwt import * import StringIO, os from test ...

  5. Go Web编程 第三章--接收请求

    net/http标准库 net/http标准库通常包括两个部分,客户端和服务器,我们可以通过ListenAndServe创建一个简陋的服务器 package main import ( "n ...

  6. Codeforces Round #296 (Div. 1) C. Data Center Drama 欧拉回路

    Codeforces Round #296 (Div. 1)C. Data Center Drama Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xx ...

  7. ROS知识(14)----局部避障的动态窗口算法(DWA)及其调试的方法

    Dynamic Window Approach(DWA)是重要的局部轨迹规划算法,ROS中使用了DWA算法获得了很好的局部路径规划的效果.具体的教程可参考官方的导航调试资料Navigation Tun ...

  8. bio、nio、aio及select、poll、epoll

    BIO与NIO.AIO的区别http://blog.csdn.net/skiof007/article/details/52873421 select.poll.epoll之间的区别总结http:// ...

  9. startActivities的使用

    和startActivity()类似,startActivities也是界面跳转,可是传入的intent是一个数组,也就是说是多个. 如果我传入的是两个intent: I1和I2.则调用startAc ...

  10. iOS中安全结束 子线程 的方法

    一个典型的结束子线程的方法:   用 isFinished 检测子线程是否被完全kill掉 -(IBAction)btnBack:(id)sender { //释放内存 仅仅remove 并不会触发内 ...