Google下拉刷新控件SwipeRefreshLayout

来源:互联网 发布:android 开启网络权限 编辑:程序博客网 时间:2024/04/29 06:57

SwipeRefrshLayout是Google官方更新的一个Widget,可以实现下拉刷新的效果。通过源码我们可以知道SwipeRefreshLayout继承了ViewGroup。
SwipRefreshLayout中存在一个接口,通过此接口我们可以监听滑动手势,其实使用此组件最重要的步骤就是实现此接口的onRefresh方法,在此方法中实现数据的更新操作。

        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {                        Toast.makeText(MainActivity.this,"刷新完成!",Toast.LENGTH_SHORT).show();                        swipeRefreshLayout.setRefreshing(false);                    }                },2000);            }        });

除了OnRefreshListener接口外,SwipRefreshLayout中还有一些其他重要的方法,具体如下:

1setOnRefreshListener(SwipeRefreshLayout.OnRefreshListener listener):设置手势滑动监听器。         2setProgressBackgroundColor(int colorRes):设置进度圈的背景色。         3setColorSchemeResources(int… colorResIds):设置进度动画的颜色。         4setRefreshing(Boolean refreshing):设置组件的刷洗状态。         5setSize(int size):设置进度圈的大小,只有两个值:DEFAULT、LARGE 

简单的使用:

布局 :

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="so.wih.android.mydownrefresh.MainActivity">    <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/rv_msg"            android:layout_width="match_parent"            android:layout_height="match_parent"/>    </android.support.v4.widget.SwipeRefreshLayout></RelativeLayout>

代码:

public class MainActivity extends AppCompatActivity {    private SwipeRefreshLayout swipeRefreshLayout;    private static final int REFRESH_COMPLETE = 110;    private Handler mHandler = new Handler() {        public void handleMessage(android.os.Message msg) {            switch (msg.what) {                case REFRESH_COMPLETE:                    i++ ;                    data.add("你好 "+i);                    myAdapter.notifyDataSetChanged();                    swipeRefreshLayout.setRefreshing(false);                    break;            }        }    };    private ListView rvMsg;    private List<String> data = new ArrayList<>();    private int i = 0 ;    private MyAdapter myAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.id_swipe_ly);        rvMsg = (ListView) findViewById(R.id.rv_msg);        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 2000);            }        });        for (int j = 1; j < 7 ; j++) {            data.add("hello"+j);        }        myAdapter = new MyAdapter();        rvMsg.setAdapter(myAdapter);    }    private class MyAdapter extends BaseAdapter{        @Override        public int getCount() {            return data.size();        }        @Override        public Object getItem(int position) {            return null;        }        @Override        public long getItemId(int position) {            return 0;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            TextView textView = new TextView(MainActivity.this);            textView.setText(data.get(position));            return textView;        }    }}

效果:
这里写图片描述

0 0
原创粉丝点击