看板 Knuckles_note
作者 標題 [AndroidStudio] 加上下拉更新功能 SwipeRefresh
時間 2015-12-19 Sat. 13:19:30
由於我們是把下載資料的動作 loadData 寫在 MainActivity 的 onCreate
只有在 APP 第一次打開的時候會執行到
離開 APP 後過陣子再打開還是舊的內容
所以必需加個手動更新資料的功能
現在各種 APP 普遍使用的方法都是用下拉更新
就是在列表滑到頂的時候,再往下拉一段距離後放開,就會啟動更新的動作
修改 activity_main.xml
把 <ListView> 用 <android.support.v4.widget.SwipeRefreshLayout> 包起來
像這樣
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.widget.SwipeRefreshLayout>
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView … />
</android.support.v4.widget.SwipeRefreshLayout>
修改 MainActivity.java
在 public class MainActivity … 下一行的地方
加上一個類別的成員變數
SwipeRefreshLayout mSwipeLayout;
在成員函式 onCreate 裡加上
mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefresh);
mSwipeLayout.setOnRefreshListener(this);
mSwipeLayout.setColorSchemeColors(Color.BLUE); //重整的圖示用藍色
mSwipeLayout.setOnRefreshListener(this);
mSwipeLayout.setColorSchemeColors(Color.BLUE); //重整的圖示用藍色
點一下畫紅線的 this,按 Alt+Enter
選「Make 'MainActivity' implement 'android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener'」
![[圖]](http://i.imgur.com/DsVQ6pd.png)
這樣會自動在類別 implements 的部份多加個 SwipeRefreshLayout.OnRefreshListener
接著會詢問是否加上成員函式 onRefresh,點OK
![[圖]](http://i.imgur.com/Qx8Vkry.png)
在自動產生的成員函式 onRefresh 裡加上使用下拉更新後要做的事
例如我們要執行 loadData(); 改成像這樣
@Override
public void onRefresh() {
loadData(); //下載並更新列表的資料
}
public void onRefresh() {
loadData(); //下載並更新列表的資料
}
在成員函式 loadData 裡,在 client.get 後的 onSuccess 與 onFailure 裡加上
mSwipeLayout.setRefreshing(false); //結束更新動畫
在載入資料完成時結束 SwipeRereshLayout 的動畫執行看看,當列表已滑至頂端時,再往下滑
會出現一個重整的圖示,此時放開即可執行更新資料的動作
![[圖]](http://i.imgur.com/Q4J394x.png)
參考
http://developer.android.com/intl/zh-tw/training/swipe/add-swipe-interface.html#AddSwipeWidget
http://brianchen85.blogspot.tw/2015/06/android-refresh-listview.html
--
※ 作者: Knuckles 時間: 2015-12-19 13:19:30
※ 編輯: Knuckles 時間: 2015-12-30 19:04:38
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 996
回列表(←)
分享