【Android - V】之SwipeRefreshLayout的使用

來源:互聯網
上載者:User

標籤: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的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.