您的位置:首页 > 其它

使用pullToRefresh进行下拉刷新和上拉加载

2017-10-18 20:07 645 查看
1.使用import moundle导进这个库文件,添加库文件的依赖
.此时左下角可能会报错,只需要点击install...去下载16版本的sdk,还需要下载19版本的buildTools

2.代码实现:

    private PullToRefreshListView refreshListView;

    private List<DataDataBean.ResultsBean> list = new ArrayList<>();//记录当前展示的所有数据

    private ListViewAdapter listViewAdapter;

    private int page_num = 1;

    private ILoadingLayout startLabels;

    @Nullable

    @Override

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_listview_layout,container,false);

        refreshListView = view.findViewById(R.id.refresh_list_view);

        return view;

    }

    @Override

    public void onActivityCreated(@Nullable Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);

        //1.首次加载

        getDataFromNet();

        //2.设置刷新模式

        /*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */

        refreshListView.setMode(PullToRefreshBase.Mode.BOTH);

        //3.通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别(也就是设置向下拉的时候头部里面显示的文字)

        //此时这里设置的是下拉刷新的时候显示的文字,所以第一个设置true表示现在是刷新,第二个设置为false

        startLabels = refreshListView.getLoadingLayoutProxy(true, false);

        startLabels.setPullLabel("下拉刷新");

        startLabels.setRefreshingLabel("正在刷新...");

        startLabels.setReleaseLabel("放开刷新");

        ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy(false, true);

        endLabels.setPullLabel("上拉刷新");

        endLabels.setRefreshingLabel("正在载入...");

        endLabels.setReleaseLabel("放开刷新...");

        //4.设置监听事件

       

        refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {

            //下拉刷新的时候调用的方法....请求第一页的数据,清空之前的数据,然后再添加设置适配器

            @Override

            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {

                //下拉刷新....请求第一页的数据,清空之前的数据,然后再添加设置适配器

                getRefreshData();

            }

            //上拉刷新的时候调用的方法..page++,然后在请求数据

            @Override

            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {

                //上拉刷新/加载...加载的时候页数++

                page_num++;

                getDataFromNet();

            }

        });

    }

    /**

     * 下拉刷新获取数据

     */

    private void getRefreshData() {

        NetDataUtil.getData("http://gank.io/api/data/Android/10/1", getActivity(), new JsonCallBack() {

            @Override

            public void getJsonString(String json) {

                //解析

                Gson gson = new Gson();

                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);

                //先清空一下数据

                list.clear();

                //添加到集合的最前边,,,,(0,,,,)

                list.addAll(0,dataDataBean.getResults());

                //设置适配器

                setAdapter();

                //设置适配器之后停止刷新的操作

                refreshListView.onRefreshComplete();

                //可以设置刷新的时间....

                startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新

            }

        });

    }

    /**

     * 刚开始进入页面获取网络数据....还可以作为上拉加载获取数据的操作

     *

     *

     */

    private void getDataFromNet() {

        //第一个参数是接口,第二个上下文,第三个回调json数据

        NetDataUtil.getData("http://gank.io/api/data/Android/10/"+page_num, getActivity(), new JsonCallBack() {

            @Override

            public void getJsonString(String json) {

                //解析

                Gson gson = new Gson();

                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);

                //往后面添加...

                list.addAll(dataDataBean.getResults());

                //设置适配器

                setAdapter();

                //停止刷新

                refreshListView.onRefreshComplete();

            }

        });

    }

    private void setAdapter() {

        if (listViewAdapter == null){

            listViewAdapter = new ListViewAdapter(getActivity(),list);

            refreshListView.setAdapter(listViewAdapter);

        }else {

            listViewAdapter.notifyDataSetChanged();

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: