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 ...
随机推荐
- 初识Spring——Spring核心容器
一. IOC和DI基础 IOC-Inversion of Control,译为控制反转,是一种遵循依赖倒置原则的代码设计思想. 所谓依赖倒置,就是把原本的高层建筑依赖底层建筑“倒置”过来,变成底层建筑 ...
- Kubernetes1.3:POD生命周期管理
转:http://blog.csdn.net/horsefoot/article/details/52324830 (一) 核心概念 Pod是kubernetes中的核心概念,kubernetes对 ...
- centos+uwsgi+nginx+python+django服务器安装配置
1.ssh登录后使用fdisk –l查看需要格式化硬盘的名称: 2.运行fdisk /dev/vdb,对数据盘进行分区,按照提示,依次输入n,p,1,两次回车,wq,分区开始.(注意数据盘的名称,和阿 ...
- github下载项目
- 韩梦飞沙Android应用集合 想法
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 那些收藏的图片 那些收藏的微博 那些收藏的音乐 定时短信 音乐列表汇 每天都是快乐的
- android activity 窗口 样式
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 将 活动 设置成 窗口样式, 可以设置 主题 为 对话框, 或者 半透明. 安卓:主题= ...
- 维护直线的线段树:Bzoj1568,Bzoj3938(Uoj88)
有这样一类线段树,可以维护一些直线方程并对每个点求出最大值. 首先先看BZOJ1568,输入给你条直线的方程,你需要对于指定的位置求出最大的函数值. 看到数据范围nlog^2n可做,考虑用线段树去维护 ...
- Kali2.0通过xrdp实现windows远程链接Linux
标题:Kali2.0通过xrdp实现windows远程链接Linux apt-get install xrdp 首先需要安装xrdp 接下来安装xfce4 apt-get install xfce4 ...
- java多线程技术之八(锁机制)
Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我 ...
- 【洛谷】4310: 绝世好题【二进制DP】
P4310 绝世好题 题目描述 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). 输入输出格式 输入格式: 输入文件共2行 ...