加载刷新

本文介绍了一个名为MyFragment的Android应用片段,该片段通过网络请求加载新闻数据,并使用PullToRefreshListView实现了下拉刷新和上拉加载更多功能。文章详细展示了如何在onCreateView方法中初始化组件、设置监听器及适配器,并根据网络状态决定是否发起数据请求。

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

public class MyFragment extends Fragment {
    private int pageIndex = 1;
    private MyAdapter adapter;
    String url = "http://v.juhe.cn/toutiao/index?type=";
    String url1 ="&key=b6573217b60ba1627d928ab26f5e4652";
    private List<MyJson.ResultBean.DataBean> list1 = new ArrayList<>();
    private Bundle arguments;
    private PullToRefreshListView xlv;
    private MyData db;
    private String urls;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.myfragment,container,false);
        db = new MyData(getActivity());
        arguments = getArguments();
        urls = url+ arguments.getString("type")+url1;
        xlv = view.findViewById(R.id.pull);
        xlv.setMode(PullToRefreshBase.Mode.BOTH);
        xlv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                pageIndex=1;
                getData();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                pageIndex=2;
                getData();
            }
        });


        if (NetStateUtil.isConn(getActivity())){

           MyTask myTask = new MyTask(new MyTask.ICallBacks() {
                @Override
                public void getJson(String json) {
                    db.insetData(urls,json);
                    Gson gson = new Gson();
                    MyJson myJson = gson.fromJson(json, MyJson.class);
                    list1 = myJson.getResult().getData();
                    setadapter();
                }
            });

            myTask.execute(url+arguments.getString("type")+url1);
           getData();
        }else {
            Toast.makeText(getActivity(),"当前无网络",Toast.LENGTH_SHORT).show();
            String s = db.queryData(urls);
            Gson gson = new Gson();
            MyJson myJson = gson.fromJson(s, MyJson.class);
            list1 = myJson.getResult().getData();
            setadapter();
        }


        xlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent = new Intent(getActivity(), WebViewPage.class);
                intent.putExtra("uri", list1.get(i-1).getUrl());
                startActivity(intent);
            }
        });
        return view;
    }
    @SuppressLint("SimpleDateFormat")
    private void setadapter() {
        if (adapter==null){


            /*Date date = new Date(System.currentTimeMillis());
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
            String format = simpleDateFormat.format(date);
            xlv.setRefreshTime(format);*/
            adapter = new MyAdapter(getActivity(),list1);
            xlv.setAdapter(adapter);

        }else {
            adapter.notifyDataSetChanged();
        }

    }


   public void getData() {
        MyTask myTask = new MyTask(new MyTask.ICallBacks() {
            @Override
            public void getJson(String json) {
                Gson gson = new Gson();
                MyJson myJson = gson.fromJson(json, MyJson.class);
                if (pageIndex==1){
                    list1.clear();
                }
                list1.addAll(myJson.getResult().getData());
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        xlv.onRefreshComplete();
                    }
                },1000);
                setadapter();
            }
        });
        myTask.execute(urls);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值