Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方的SwipeRefreshLayout

Android官方的SwipeRefreshLayout

編輯:關於Android編程

這個是基於最新v4包實現的一個下拉刷新的東東~~~

先給大家透露一下,整體很簡單,畢竟不是自定義,還請大家放寬心對待!!!廢話不多說,直接貼代碼

 

package com.bob.swiperefresh;

import android.app.Activity;
import android.os.Message;
import android.support.v4.widget.*;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

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

import android.os.Handler;

/*
這是一個下拉刷新的demo
  1、先用官方的SwipeRefreshLayout來實現吧___好丑的說
 */

public class MainActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener {

    private int index = 0;
    private static final int REFRESH_FINISH = 1; //設置一個刷新完成的標記量
    private SwipeRefreshLayout mSwipe;
    private ListView listView;
    private String[] arrays = new String[]{Hello, I am a student, I love android, love open Resource};
    private ArrayAdapter adapter;
    private List data = new ArrayList<>();//asList是數組和集合之間的橋梁,不能直接用於初始化List接口變量,否則在加數據的時候會崩掉

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case REFRESH_FINISH:
                    data.add(getData());
                    adapter.notifyDataSetChanged();//提示數據適配器數據發生改變從而更新適配器裡的數據
                    mSwipe.setRefreshing(false);//隱藏刷新進度條
                    break;
            }
        }
    };

    public String getData() {//循環獲取數組中的信息
        String re = arrays[index];
        index = (index + 1) % arrays.length;
        return re;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSwipe = (SwipeRefreshLayout) findViewById(R.id.swipe_ly);
        listView = (ListView) findViewById(R.id.lv);
        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
        listView.setAdapter(adapter);
        mSwipe.setOnRefreshListener(this);

        mSwipe.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_light,
                android.R.color.holo_orange_light, android.R.color.holo_red_light);
        //這裡設置加載動畫的顏色可選項,最多設置4種
    }


    @Override
    public void onRefresh() {//應該這麼使用:網絡訪問或者其他的費時操作在這裡邊,最後發送message就ok
        //說明一下,這個demo裡更新ui的東東不一定非要用handler,也可以直接在這裡更新ui,只是沒有了延遲的效果,但在
        //項目裡肯定還是需要子線程來實現的

        handler.sendEmptyMessageDelayed(REFRESH_FINISH, 4000);//發送一個空消息並添加延遲時間
    }


 /*   public void onRefresh(){//或者采用這種方式也行,

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                mSwipe.setRefreshing(false);
            }
        },4000);
    }*/
}

 

 

布局文件:

 



    
        

    


 

\

數據是我一條一條刷新出來的,具體實現邏輯可以在源碼中看到~~~

據我所知,如果v4版本較低的話效果是“知乎客戶端”的那個效果,現在最新的這個目前用在了“coursera”客戶端上,有興趣的盆友可以自行看看

(ps:渣渣用的是Linux,暫時還沒有找到比較稱心的gift錄制工具,如博友有推薦,還請留言告知!!!跪謝!!!)

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved