重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍android如何使用PullToRefresh框架实现ListView下拉刷新上拉加载更多,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联为客户提供专业的成都网站设计、成都网站制作、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、移动网站建设等网站方面业务。
具体内容如下
其实谷歌官方目前已经推出ListView下拉刷新框架SwipeRefreshLayout,想了解的朋友可以点击 android使用SwipeRefreshLayout实现ListView下拉刷新上拉加载 了解一下;
大家不难发现当你使用SwipeRefreshLayout下拉的时候布局文件不会跟着手势往下滑,而且想要更改这个缺陷好像非常不容易。
虽然SwipeRefreshLayout非常简单易懂,但是需求需要下拉刷新的时候跟着手势下滑就不能用SwipeRefreshLayout了;
上面图片效果使用的是PullToRefresh框架,在我的工程里面没有导入类库和jar包,而是把下拉刷新功能直接抽取出来使用;
当下拉的时候回调监听,在抽取完下拉刷新功能的基础上实现上拉加载更多功能实现也非常简单,所以顺手写上了;
我是从github上下载的Android-PullToRefresh-master框架,在library中抽取的;
首先需要复制的类大概有十个左右:
然后跟进报错查看需要什么文件就复制什么文件;把错误搞定之后首先来看下布局:
值得注意的是默认情况下下拉刷新的执行动画中显示的文本是英文,这里我们需要手动修改pull_refresh_strings.xml中的内容:
向下拉刷新… 松开更新… 正在加载… 向下拉加载更多… 松开加载更多… 正在加载…
下面是调用下拉刷新和上下加载更多的代码:
public class MainActivity extends Activity { private PullToRefreshListView pullToRefreshListView; //adapter的数据源 private ListnumList=new ArrayList (); private ArrayAdapter arrayAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pullToRefreshListView=(PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview); //初始化数据 for(int x=0;x<18;x++){ numList.add(""+x); } arrayAdapter = new ArrayAdapter (this, R.layout.item_listview,R.id.textview,numList); pullToRefreshListView.setAdapter(arrayAdapter); //设定刷新监听 pullToRefreshListView.setOnRefreshListener(new OnRefreshListener () { @Override public void onRefresh(PullToRefreshBase refreshView) { String label = DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL); // 显示最后更新的时间 refreshView.getLoadingLayoutProxy() .setLastUpdatedLabel(label); //代表下拉刷新 if(refreshView.getHeaderLayout().isShown()){ new Thread(){ public void run() { try { sleep(1000); handler.sendEmptyMessage(99); } catch (InterruptedException e) { e.printStackTrace(); } }; }.start(); } //代表下拉刷新 if(refreshView.getFooterLayout().isShown()){ new Thread(){ public void run() { try { sleep(1000); handler.sendEmptyMessage(98); } catch (InterruptedException e) { e.printStackTrace(); } }; }.start(); } } }); } private Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { if(msg.what==99){ numList.add(0, "英雄联盟"); arrayAdapter.notifyDataSetChanged(); //关闭刷新的动画 pullToRefreshListView.onRefreshComplete(); } if(msg.what==98){ numList.add(numList.size(), "魔兽世界"); arrayAdapter.notifyDataSetChanged(); //关闭刷新的动画 pullToRefreshListView.onRefreshComplete(); } }; }; }
在判断上拉刷新和下拉加载的时候
refreshView.getFooterLayout().isShown()
refreshView.getHeaderLayout().isShown()会报错,因为PullToRefreshBase这两个方法默认不是共有方法,我们需要手动该更为public
以上是“android如何使用PullToRefresh框架实现ListView下拉刷新上拉加载更多”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!