您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關android如何使用SwipeRefreshLayout實現ListView下拉刷新上拉加載,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
具體內容如下
這次使用的是系統的SwipeRefreshLayout實現下拉刷新,和設置ListView的滑動監聽判斷是否滑動到最底部然后加載更多;
這個要比PullToRefreshListView簡單很多,想PullToRefreshListView實現下拉刷新上拉加載的可以看這篇博客:
android使用PullToRefresh框架實現ListView下拉刷新上拉加載更多
至于使用哪一種大家可以根據產品的需求選擇,這兩種刷新目前為止世面上還是使用PullToRefreshListView的比較多;
首先說下SwipeRefreshLayout的五個方法:
1、setOnRefreshListener():設置手勢滑動監聽器。
2、setProgressBackgroundColor():設置進度圈的背景色。
3、setColorSchemeResources():設置進度動畫的顏色。
4、setRefreshing():設置組件的刷洗狀態。
5、setSize():設置進度圈的大小
這個大家簡單了解一下,下面代碼中都一一用到;
首先說下布局文件,如果想用SwipeRefreshLayout實現下拉刷新必須把ListView寫到SwipeRefreshLayout布局里面;
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/srfl"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listview" /> </android.support.v4.widget.SwipeRefreshLayout>
我這邊是自己寫的小Demo所以下拉的時候直接發送一個延時1秒的handler,然后添加數據刷新adapter;
上拉加載更多的時候直接給ListVIew設置了一個滑動監聽,判斷是否滑動到adapter的最下面,然后加載數據,刷新adapter;
public class MainActivity extends Activity { private ListView mListView; private SwipeRefreshLayout swipeRefreshLayout; private List<String> stringList=new ArrayList<>(); private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); for (int x=0 ; x<16;x++){ stringList.add("新浪微博:搏擊愛好者Z"+"---"+x); } initView(); } private void initView() { swipeRefreshLayout= (SwipeRefreshLayout) findViewById(R.id.srfl); //設置進度圈的大小;(這里面只有兩個值SwipeRefreshLayout.LARGE和DEFAULT,后者是默認效果) swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE); //設置進度圈的背景色。這里隨便給他設置了一個顏色:淺綠色 swipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.CYAN); //設置進度動畫的顏色。這里面最多可以指定四個顏色,我這也是隨機設置的,大家知道怎么用就可以了 swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_orange_dark ,android.R.color.holo_blue_dark ,android.R.color.holo_red_dark ,android.R.color.widget_edittext_dark); mListView= (ListView) findViewById(R.id.listview); adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, stringList); mListView.setAdapter(adapter); //設置手勢滑動監聽器 swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { public void onRefresh() { //發送一個延時1秒的handler信息 handler.sendEmptyMessageDelayed(199,1000); } }); //給listview設置一個滑動的監聽 mListView.setOnScrollListener(new AbsListView.OnScrollListener() { //當滑動狀態發生改變的時候執行 public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState){ //當不滾動的時候 case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: //判斷是否是最底部 if(view.getLastVisiblePosition()==(view.getCount())-1){ for(int x=0;x<5;x++){ stringList.add(stringList.size(),"魔獸世界"+x); } adapter.notifyDataSetChanged(); } break; } } //正在滑動的時候執行 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); } private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { if(msg.what==199){ stringList.add(0,"英雄聯盟"); adapter.notifyDataSetChanged(); //設置組件的刷洗狀態;false代表關閉 swipeRefreshLayout.setRefreshing(false); } } }; }
這里面為了給大家演示SwipeRefreshLayout的幾個方法,如果全部使用默認可以把setProgressBackgroundColor():setColorSchemeResources():setSize():這三個方法去掉。
這樣代碼會更少,默認效果也非常不錯,這個看大家需求。
關于“android如何使用SwipeRefreshLayout實現ListView下拉刷新上拉加載”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。