PullToRefresh的使用

来源:互联网 发布:董岗彪 知乎 编辑:程序博客网 时间:2024/05/16 07:58

PullToRefresh是一套非常实用的下拉刷新库,支持ListView,ExpandableListView,GridView和WebView。

实例一:

public class LocalListActivity extends AppCompatActivity {    private PullToRefreshListView mPullLv;    private LinkedList<String>itemLists;    private ArrayAdapter<String>adapter;    Handler hander = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            adapter.notifyDataSetChanged();            //设置加载完成后,取消加载的进度条            mPullLv.onRefreshComplete();        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_local_list);        mPullLv = (PullToRefreshListView) findViewById(R.id.pull_lv);        itemLists = new LinkedList<>();        initData();        //设置加载的模式        mPullLv.setMode(PullToRefreshBase.Mode.BOTH);        //设置刷新的监听器        mPullLv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            //下拉刷新时会回调的方法            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {                itemLists.clear();                loadData();;                hander.sendEmptyMessageDelayed(1,2000);            }            //上啦加载时执行的方法            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {                //模拟耗时操作                new Thread(){                    @Override                    public void run() {                        super.run();                        try {                            Thread.sleep(2000);                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                        loadData();                        hander.sendEmptyMessage(1);                    }                }.start();            }        });    }    /**     * 初始化数据     * */    private void initData(){        for (int i = 0; i < 20; i++) {            itemLists.add("第"+i+"条数据");        }        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,itemLists);        mPullLv.setAdapter(adapter);    }    //加载数据    private void loadData(){        int itemSize = itemLists.size();        for (int i = 0; i < 20; i++) {            itemLists.add("第"+(itemSize+i)+"条数据");        }    }}
 <com.handmark.pulltorefresh.library.PullToRefreshListView        android:id="@+id/pull_lv"        android:layout_width="match_parent"        android:layout_height="match_parent">    </com.handmark.pulltorefresh.library.PullToRefreshListView>
效果:

对于GridView的使用:

public class LocalGridActivity extends AppCompatActivity {    private PullToRefreshGridView mPullGv;    private LinkedList<String>list;    private ArrayAdapter<String>adapter;    private int index = 0;    private int lastIndex = 0;    Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            adapter.notifyDataSetChanged();            mPullGv.onRefreshComplete();        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_local_grid);        mPullGv = (PullToRefreshGridView) findViewById(R.id.pull_gv);        list = new LinkedList<>();        initData();        lastIndex = list.size();        adapter = new ArrayAdapter<String>(this,R.layout.item_gv_local,R.id.id_item_tv,list);        mPullGv.setAdapter(adapter);        //设置模式        mPullGv.setMode(PullToRefreshBase.Mode.BOTH);        //设置刷新监听器        mPullGv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) {                //怎么获取下拉刷新的时间。                String label = DateUtils.formatDateTime(getApplicationContext(),System.currentTimeMillis(),                        DateUtils.FORMAT_ABBREV_ALL|DateUtils.FORMAT_SHOW_DATE|DateUtils.FORMAT_SHOW_TIME);                mPullGv.getLoadingLayoutProxy().setLastUpdatedLabel(label);                index--;                list.addFirst(index+"");                handler.sendEmptyMessageDelayed(1,2000);            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) {                list.add(lastIndex+"");                lastIndex++;                handler.sendEmptyMessageDelayed(1,2000);            }        });    }    private void initData(){        for (int i = 0; i < 30; i++) {            list.add(i+"");        }    }}

<com.handmark.pulltorefresh.library.PullToRefreshGridView        android:id="@+id/pull_gv"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:numColumns ="2" >    </com.handmark.pulltorefresh.library.PullToRefreshGridView>
效果:





0 0
原创粉丝点击