PulltoRefrilist

本文介绍如何在Android应用的Fragment中实现PullToRefreshListView组件的下拉刷新及上拉加载更多功能,并展示了具体的代码实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Main方法

public class MyFragment01 extends Fragment {
    String path = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";
    //初始id为0
    int page = 0;
    private PullToRefreshListView plv;
    //定义一个大集合,为下拉加载做准备
    List<MyBean.DataBean> list = new ArrayList<>();
    private MyAdapter01 adapter01;
    //使用handler进行关闭刷新
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

        }
    };
    @SuppressLint("StaticFieldLeak")
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.pullto_item, container, false);
        //获取id
        plv = view.findViewById(R.id.plv);
        //调用方法解析数据
        initData(0);
        adapter01 = new MyAdapter01(list,getActivity());
        plv.setAdapter(adapter01);
        //下拉刷新
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
            @Override
            public void onRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                //刷新时清空集合
                list.clear();
                //运行一次id加一
                page++;
                //使用新id加载解析数据
                initData(page);
                //使用handler进行关闭刷新
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //关闭刷新
                        plv.onRefreshComplete();
                    }
                    //关闭刷新的时间
                },500);
                //吐司
                Toast.makeText(getActivity(),"刷新",Toast.LENGTH_SHORT).show();
            }
        });
        //上拉加载
        plv.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() {
            @Override
            public void onLastItemVisible() {
                //运行一次id加一
                page++;
                //使用新id加载解析数据
                initData(page);
                //吐司
                Toast.makeText(getActivity(),"加载",Toast.LENGTH_SHORT).show();
            }
        });
        return view;
    }

    private void initData(int page) {
        new MyAsy().execute(path+page);
    }

    private class MyAsy extends AsyncTask<String,Void,String>{
        @Override
        protected String doInBackground(String... strings) {
            String data = GetURL.getData(path + page);
            return data;
        }

            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                MyBean myBean = gson.fromJson(s, MyBean.class);
                List<MyBean.DataBean> list1 = myBean.getData();
                //把请求的数据放入大集合中
                list.addAll(list1);
                //刷新
                adapter01.notifyDataSetChanged();

            }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值