標籤:out trace thread art gre nbsp alt message 檔案
SwipeRefreshLayout是Android V4、V7包中的一個控制項,是Google給我們提供的一個下拉重新整理的布局控制項,可以輕鬆完成下拉重新整理。
SwipeRefreshLayout的特點是其中只能有一個子控制項,和ScrollView相似。
我們今天已一個例子來看看SwipeRefreshLayout這個控制項的功能:使用SwipeRefreshLayout布局結合ListView完成下拉重新整理,向ListView中添加新資料的功能。
首先來看一下一些關於配置的問題。SwipeRefreshLayout布局中可以設定重新整理圓圈中展示的顏色,調用setColorSchemeColors()方法設定,最多可以設定4中顏色,具體的代碼如下:
// 設定重新整理圓圈的顏色(最多隻能有四種顏色) srl.setColorSchemeColors(Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW);
頁面的布局代碼如下:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/srh" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent" /></android.support.v4.widget.SwipeRefreshLayout>
在JAVA代碼中,通過SwipeRefreshLayout在XML檔案中的ID找到這個布局控制項:
srl = (SwipeRefreshLayout) findViewById(R.id.srh);
ListView適配資料的代碼在這裡就不多說了,總之初始時候啟動並執行結果如所示:
接下來編寫SwipeRefreshLayout進行下拉重新整理的代碼。SwipeRefreshLayout布局通過setOnRefreshListener()方法設定重新整理事件,需要重寫其中的onRefresh()抽象方法,在這個方法中寫下拉重新整理的業務代碼,最後必須調用setRefreshing(false)。具體的代碼如下:
// 設定SwipeRefreshLayout的重新整理事件 srl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); mHandler.sendEmptyMessage(1); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } }); // 初始化Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { // 在ListView中添加兩條資料 data.add(0, "New Item......"); data.add(0, "New Item......"); adapter.setData(data); adapter.notifyDataSetChanged(); // 取消SwipeRefreshLayout的重新整理狀態 srl.setRefreshing(false); } } };
在這段代碼中,在重新整理的時候故意停留5秒鐘,然後向ListView中添加了2條新的資料,最後在Handler中調用了setRefreshing(false)方法結束了重新整理。重新整理過程中和重新整理完畢後的狀態如所示:
以上就是對SwipeRefreshLayout布局控制項的基礎用法的介紹,下面貼出碼雲上的源碼,供大家參考。
DEMO地址
【Android - V】之SwipeRefreshLayout的使用