Android PullToRefresh上拉和下拉重新整理,android下拉重新整理

來源:互聯網
上載者:User

Android PullToRefresh上拉和下拉重新整理,android下拉重新整理

Github連結:

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

GUIDE:

https://github.com/chrisbanes/Android-PullToRefresh/wiki/Quick-Start-Guide

1. 設定Listview 
layout檔案中定義PullToRefreshListView 

Xml代碼

  1. <com.handmark.pulltorefresh.library.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.     }  
  95. }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.