Android 系統自帶下拉刷新 SwipeRefreshLayout

jopen 8年前發布 | 24K 次閱讀 Android開發 移動開發

  1. 創建 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <ListView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:id="@+id/listview"
      android:footerDividersEnabled="false"
      android:headerDividersEnabled="false"
      android:background="@android:color/darker_gray"
      />

</android.support.v4.widget.SwipeRefreshLayout>

 此處 標簽 一定要寫 全稱:

android.support.v4.widget.SwipeRefreshLayout

否則 會出現 以下異常:

11-25 21:23:15.819 31408-31408/com.example.leonardo.bmobtest E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.leonardo.bmobtest/com.example.leonardo.bmobtest.SwipeRefreshActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class SwipeRefreshLayout

2. 在 Activity中使用:

.setColorSchemeResources(android.R.color.,android.R.color.,android.R.color.,android.R.color.);

3.設置 onRefresh 偵聽器:

  

.setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener() {
    onRefresh() {
        Handler().postDelayed(Runnable() {
            run() {
                .add(,+ Random());
                .notifyDataSetChanged();
                .setRefreshing();
            }
        }, );

    }
});

即可實現,簡單 漂亮的 下拉刷新效果,以下為 Activity 全部代碼:

 

package com.example.leonardo.bmobtest;

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import roboguice.activity.RoboActivity;
import roboguice.inject.InjectView;

/**
 * Created by leonardo on 15/11/25.
 */
public class SwipeRefreshActivity  extends RoboActivity{
    @InjectView(R.id.swipe)
    SwipeRefreshLayout swipeRefreshLayout;
    @InjectView(R.id.listview)
    ListView listView;
    List<String> datas;
    ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_swipe);
        datas = new ArrayList<>();
        for (int i=0;i<10;i++){
            datas.add("item "+i);
        }
        adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,datas);
        adapter.notifyDataSetChanged();
        listView.setAdapter(adapter);
        swipeRefreshLayout.setColorSchemeResources(android.R.color.black,android.R.color.holo_orange_dark,android.R.color.holo_red_dark,android.R.color.holo_green_dark);
        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        datas.add(0,"item new" + new Random(10));
                        adapter.notifyDataSetChanged();
                        swipeRefreshLayout.setRefreshing(false);
                    }
                }, 4000);

            }
        });
    }
}

此處使用的是 roboguice 依賴庫

來自: http://my.oschina.net/leov1/blog/535598

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!