Android PullToRefresh上拉和下拉刷新

Github链接:

https://github.com/chrisbanes/Android-PullToRefresh

1. 设置Listview

layout文件中定义PullToRefreshListView

Xml代码

  1. <com.jackie.PullToRefreshListView
  2. android:id="@+id/list_view"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent" />

2. 设置Mode 

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

可支持的Mode如下:

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

3. 实现监听Listener

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

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

4. 具体代码如下:

  1. public class MainActivity extends Activity {
  2. private ArrayList<String> mListItems;
  3. private PullToRefreshListView mListView;
  4. private SampleListAdapter mAdapter;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.sample);
  9. // 设置初期数据
  10. mListItems = new ArrayList<String>();
  11. for (int i = 1; i <= 10; i++) {
  12. mListItems.add("Item " + Integer.toString(i));
  13. }
  14. // 设置ListView
  15. mListView = (PullToRefreshListView) findViewById(R.id.list_view);
  16. mAdapter = new SampleListAdapter();
  17. mListView.setAdapter(mAdapter);
  18. // 设置PullToRefresh
  19. mListView.setMode(Mode.BOTH);
  20. mListView.setOnRefreshListener(new OnRefreshListener2<ListView>(){
  21. // 下拉Pulling Down
  22. @Override
  23. public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
  24. // 下拉的时候数据重置
  25. mListItems = new ArrayList<String>();
  26. for (int i = 1; i <= 10; i++) {
  27. mListItems.add("Item " + Integer.toString(i));
  28. }
  29. mAdapter.notifyDataSetChanged();
  30. new FinishRefresh().execute();
  31. }
  32. // 上拉Pulling Up
  33. @Override
  34. public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
  35. // 上拉的时候添加选项
  36. int count = mListItems.size();
  37. mListItems.add("Item " + Integer.toString(++count));
  38. mAdapter.notifyDataSetChanged();
  39. new FinishRefresh().execute();
  40. }
  41. });
  42. }
  43. private class SampleListAdapter extends BaseAdapter {
  44. @Override
  45. public int getCount() {
  46. return mListItems.size();
  47. }
  48. @Override
  49. public Object getItem(int index) {
  50. return mListItems.get(index);
  51. }
  52. @Override
  53. public long getItemId(int index) {
  54. return index;
  55. }
  56. @Override
  57. public View getView(int index, View view, ViewGroup arg2) {
  58. if(view == null){
  59. LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  60. view = inflater.inflate(R.layout.list_item, null);
  61. }
  62. TextView textView = (TextView)view.findViewById(R.id.listItemText);
  63. textView.setText(mListItems.get(index));
  64. return view;
  65. }
  66. }
  67. private class FinishRefresh extends AsyncTask<Void, Void, Void>{
  68. @Override
  69. protected Void doInBackground(Void... params) {
  70. return null;
  71. }
  72. @Override
  73. protected void onPostExecute(Void result){
  74. mListView.onRefreshComplete();
  75. }
  76. }
  77. }
时间: 2024-10-28 09:48:22

Android PullToRefresh上拉和下拉刷新的相关文章

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

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 标签: Android下拉刷新pullToRefreshListViewGridView 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-r

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

最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/details/38238749 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,例子中的功能极其强大,支持很多控件.本篇博客详细给大家介绍下ListView和GridView利用pull-to-rerfesh 实现下拉刷新和上拉加载更多. 1.List

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

Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,例子中的功能极其强大,支持很多控件.本篇博客详细给大家介绍下ListView和GridView利用pull-to-rerfesh 实现下拉刷新和上拉加载更

Android研究之手PullToRefresh(ListView GridView 下拉刷新)使用详解

 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-refresh ,有兴趣的看下,例子中的功能极其强大,支持很多控件.本篇博客详细给大家介绍下ListView和GridView利用pull-to-rerfesh 实现下拉刷新和上拉加载更多.对布局不清楚的可以看Android研究自定义ViewGroup实现FlowLayout 详解. 1.ListView下拉刷新快速入门 pull-to-refresh对ListView进行了封装,叫做:PullToRefreshList

Android学习之listview的下拉刷新、上拉载入

本例是在上例的基础上完成的.本例实现的listview上拉载入.下拉刷新功能,是在开源网站上别人写好的listview,主要是对listview的控件进行重写,添加了footer和header. 1.listview_footer listview_footer是listview的底部. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http

Android新控件RecyclerView浅析及上拉和下拉刷新

概述: RecyclerView是android-support-v7-21版本中新增的一个Widgets,RecyclerView是ListView的升级版本,更加先进和灵活.在以后的开发中我们就可以直接使用RecyclerView来替换ListView. 特点介绍: 1. 可横向展示 2. 消除错位问题 3. 标准化了ViewHolder 横向: private void initHorizaontal(List<ItemModel> models) { RecyclerView recy

Android UI--自定义ListView(实现下拉刷新+加载更多)

http://blog.csdn.net/wwj_748/article/details/12512885 Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就是不健全的.因为小巫近期要开发新浪微博客户端,需要实现ListView的下拉刷新,所以就想把这个UI整合到项目当中去,这里只是一个demo,可以根据项目的需要进行修改. 就不要太在乎界面了哈:

android 安卓自定义listview实现下拉刷新

[1].重写listView public class MyListView extends ListView implements OnScrollListener {          private final static int RELEASE_To_REFRESH = 0;// 下拉过程的状态值       private final static int PULL_To_REFRESH = 1; // 从下拉返回到不刷新的状态值       private final static

ListView装上拉电阻下拉刷新

主要用到了这个几个文件.MainActivity是界面的Activity,MyAdapter是ListView的自己定义适配,MyListView是自己定义带头部LIistView,假设仅仅须要上拉载入就不须要:activity_main.xml是住界面.item.xml是ListView的子布局里面仅仅有一个TextView,listview_footer.xml是listview的载入很多其它的底部布局,listview_header.xml是listview的头部布局. MainActiv

html5+css3实现上拉和下拉刷新

<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-sc