Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android ListView上拉加載更多 下拉刷新功能實現(采用pull-to-refresh)

android ListView上拉加載更多 下拉刷新功能實現(采用pull-to-refresh)

編輯:關於Android編程

Android實現上拉加載更多功能以及下拉刷新功能,

采用了目前比較火的PullToRefresh,他是目前實現比較好的下拉刷新的類庫。

目前他支持的控件有:ListView, ExpandableListView,GridView,WebView等。

下載地址:https://github.com/chrisbanes/Android-PullToRefresh

首先第一步當然是導入libriay到咱們的項目了,具體導入方式,這裡不再贅述。

下面是個例子采用的是ListView,當然其余的和這個類似

1、布局文件activity_main.xml

01 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 02 xmlns:tools="http://schemas.android.com/tools" 03 android:layout_width="match_parent" 04 android:layout_height="match_parent" 05 tools:context=".MainActivity" > 06 07 <com.handmark.pulltorefresh.library.PullToRefreshListView 08 android:id="@+id/pull_refresh_list" 09 android:layout_width="fill_parent" 10 android:layout_height="fill_parent" /> 11 RelativeLayout> 2、要實現下拉刷新的功能很簡單,只需要實現OnRefreshListener的OnRefresh方法即可。這裡說一下如何實現上拉和下拉分別執行不同的操作。


這裡參考了http://blog.csdn.net/ueryueryuery/article/details/17440465

原理是:根據下拉和上拉顯示的布局的可見狀態類區分上拉還是下拉,然後執行相應操作。

在PullToRefresh的類庫的com.handmark.pulltorefresh.library包下,打開PullToRefreshBase.java,在這個類的最後面添加如下代碼:

1 public boolean isHeaderShown() { 2 return getHeaderLayout().isShown(); 3 } 4 5 public boolean isFooterShown() { 6 return getFooterLayout().isShown(); 7 } 3、在Activity的代碼如下:


01 public class MainActivity extends ListActivity { 02 03 private PullToRefreshListView mPullToRefreshListView; 04 05 private LinkedList mItemList; 06 private ArrayAdapter adapter; 07 08 private Context context; 09 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 context = this; 14 initData(); 15 16 adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mItemList); 17 18 //初始化控件 19 mPullToRefreshListView = (PullToRefreshListView)findViewById(R.id.pull_refresh_list); 20 ListView mListView = mPullToRefreshListView.getRefreshableView(); 21 mListView.setAdapter(adapter); 22 23 //設置pull-to-refresh模式為Mode.Both 24 mPullToRefreshListView.setMode(Mode.BOTH); 25 26 //設置上拉下拉事件 27 mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener() { 28 29 @Override 30 public void onRefresh(PullToRefreshBase refreshView) { 31 32 if (refreshView.isHeaderShown()){ 33 Toast.makeText(context, "下拉刷新",Toast.LENGTH_SHORT).show(); 34 //下拉刷新 業務代碼 35 }else { 36 Toast.makeText(context, "上拉加載更多",Toast.LENGTH_SHORT).show(); 37 //上拉加載更多 業務代碼 38 } 39 40 } 41 }); 42 43 } 44 45 46 private void initData(){ 47 //初始化數據 48 mItemList = new LinkedList(); 49 mItemList.addAll(Arrays.asList(data)); 50 51 } 52 53 private String[] data = new String[]{"data1","data2","data3","data4","data5","data6", 54 "data1","data2","data3","data4","data5","data6"}; 55 } 如上代碼所示,在OnRefresh的實現代碼中,用以區分上拉還是下拉,關鍵代碼如下:


1 if (refreshView.isHeaderShown()){ 2 Toast.makeText(context, "下拉刷新",Toast.LENGTH_SHORT).show(); 3 //下拉刷新 業務代碼 4 }else { 5 Toast.makeText(context, "上拉加載更多",Toast.LENGTH_SHORT).show(); 6 //上拉加載更多 業務代碼 7 } 至此,運行項目,可以得到演示結果了


原文地址 : http://www.dutycode.com/post-13.html

我的博客:http://www.dutycode.com


參考網址:http://blog.csdn.net/ueryueryuery/article/details/17440465

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved