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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。