国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發中下拉刷新如何實現

2019-12-12 06:03:07
字體:
來源:轉載
供稿:網友

因為最近的開發涉及到了網絡讀取數據,那么自然少不了的就是下拉刷新的功能,搜索的方法一般是自己去自定義ListView或者RecyclerView來重寫OnTouch或者OnScroll方法來實現手勢的監聽然后播放動畫最后刷新界面 

今天說的是一個Google官方提供的下拉刷新布局,名字叫做SwipeRefreshLayout,找到這個布局的時候真的是喜出望外啊,下面來記錄一下它怎么用。 

這里放一下效果圖先,就是下面這個小圈圈啦 

首先是需要把這個布局套在我們需要刷新的控件之外,這里是RecyclerView

<android.support.v4.widget.SwipeRefreshLayout  android:id="@+id/reglost_srl"  android:layout_width="match_parent"  android:layout_height="match_parent">  <android.support.v7.widget.RecyclerView   android:id="@+id/reglost_rv"   android:layout_width="match_parent"   android:layout_height="match_parent" /> </android.support.v4.widget.SwipeRefreshLayout>

當我們需要顯示或者隱藏刷新這個小動畫的時候,需要調用下面這個方法
 public void setRefreshing(boolean refreshing)
但是,如果是剛開始的時候我們要顯示這個加載的動畫,不能直接把true傳入這個方法然后調用,因為我們在源代碼中可以看到SwipeRefreshLayout中的一個名為mOriginalOffsetTop的變量沒有被初始化,所以動畫是可能顯示不出來的,那么應該怎樣來顯示呢?用下面的方法 

refreshlayout.post(new Runnable() {   @Override   public void run() {    refreshlayout.setRefreshing(true);   }  });

然后,我們還需要給動畫結束后添加一個監聽

 refreshlayout.setOnRefreshListener(this); @Override public void onRefresh() {  refreshData(); // refresh the view } 

當數據加載完成了,把動畫隱藏,很簡單
refreshlayout.setRefreshing(false);
到這里,其實已經基本是全部的用法了,這個東西真的是方便,但是,不是就沒有一點問題了,稍不注意,其實還是會遇到一些問題的。
 在網上的很多代碼中,不少的開發者都喜歡在從網絡加載數據前把數據集合清空,也就是在onRefresh方法中先調用data.clear(),但是這里會出現一個問題,如果正在加載的時候我們往上滑動界面,App就會直接Crash掉,看圖 

這個問題其實也很簡單因為如果我們把數據清空了,但是列表沒有刷新,如果滑動產生的話就會去訪問data中的數據,直接就越界了。
 所以正確的做法應該是先執行聯網加載數據,當數據加載完了就清空集合,重新填入并刷新。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 无棣县| 兴城市| 奉节县| 临邑县| 防城港市| 常德市| 千阳县| 大理市| 内黄县| 林口县| 丹棱县| 社会| 竹溪县| 南丰县| 宜城市| 棋牌| 东乡族自治县| 金门县| 肥西县| 达日县| 宁蒗| 河津市| 阳城县| 堆龙德庆县| 辛集市| 思南县| 潜江市| 葵青区| 光山县| 玉龙| 沧源| 拜泉县| 铁岭县| 治县。| 山东省| 德州市| 布尔津县| 页游| 青浦区| 三台县| 永康市|