SwipeRefreshLayout 下拉刷新控件(一)

  下拉刷新是每个app中都会用到的一个功能,最近接手一个项目的时候,看到了SwipeRefreshLayout 这个控件,表示以前没用过,以前用的都是pullTorefresh,于是去网上查找了一下,谷歌的这个控件将刷新和listview做了解耦。这里做一下记录。
先看一下效果图:
这里写图片描述

首先贴一下布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >
			<android.support.v4.widget.SwipeRefreshLayout
			    android:id="@+id/id_swipe_ly"
			    android:layout_width="match_parent"
			    android:layout_height="match_parent">
		    <ListView
		        android:id="@+id/id_listview"
		        android:layout_width="match_parent"
		        android:layout_height="match_parent" />
			</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>

然后是代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.TypedValue;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity implements
        SwipeRefreshLayout.OnRefreshListener {
    private ListView mListView;
    private SwipeRefreshLayout mSwipeLayout;
    private static final int REFRESH_COMPLETE = 0X110;
    private ArrayAdapter<String> mAdapter;
    private List<String> mDatas = new ArrayList<String>(Arrays.asList("Android",
            "我要学Android", "我要学IOS", "我要学H5", "我要学PHP", "我要学ASP.NET"));

    private Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
            case REFRESH_COMPLETE:
                mDatas.addAll(Arrays.asList("Java是基础", "PHP是最好的鱼眼", "C#也不错哦"));
                mAdapter.notifyDataSetChanged();
                mSwipeLayout.setRefreshing(false);
                break;

            default:
                break;
            }
        };
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mListView = (ListView) findViewById(R.id.id_listview);
        mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly);
        setSwipeRefresh();
        onRefresh();// 手动刷新
        // mSwipeLayout.setRefreshing(true);
        // mSwipeLayout.post(new Runnable() {
        //
        // @Override
        // public void run() {
        // // TODO Auto-generated method stub
        // mSwipeLayout.setRefreshing(true);
        // }
        // });
        mSwipeLayout.setOnRefreshListener(this);
        // setColorScheme()已经弃用,使用setColorSchemeResources()来设置颜色。
        mSwipeLayout.setColorScheme(android.R.color.holo_blue_bright,
                android.R.color.holo_green_light,
                android.R.color.holo_orange_light,
                android.R.color.holo_red_light);
        mAdapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, mDatas);
        mListView.setAdapter(mAdapter);
    }
    @Override
    public void onRefresh() {
        // TODO Auto-generated method stub
        mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 2000);
    }
    private void setSwipeRefresh() {
        TypedValue typed_value = new TypedValue();
        this.getTheme().resolveAttribute(
                android.support.v7.appcompat.R.attr.actionBarSize, typed_value,
                true);
        // mSwipeLayout.setProgressViewOffset(false, 0,
        // getResources().getDimensionPixelSize(typed_value.resourceId));
        mSwipeLayout.setRefreshing(true);
    }
}

  这里就介绍完毕了,虽然效果很炫,但是唯一的缺点就是只有下拉刷新,没有上拉加载。那么下一节我们将自定义实现SwipeFefreshLayout的上拉刷新和下拉加载。
这里附上demo的下载链接:
http://download.csdn.net/detail/u014727709/9710933
转载自: http://blog.csdn.net/u014727709/article/details/53635736
欢迎start,欢迎评论,欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想你依然心痛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值