pull-to-refresh刷新

本文详细解析了Frag_OneFragment的实现,包括PullToRefreshListView的使用,数据加载与更新,以及在网络中断情况下的本地数据读取。展示了如何通过AsyncTask进行异步网络请求,并将数据持久化到本地数据库。

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

public class Frag_One extends BaseFragment {

    private PullToRefreshListView ptr;
    private String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    private ArrayList<JsonBean.DataBean> list;
    private MyAdapter myAdapter;
    int page;
    private Dao dao;

    @Override
    public void initView(View view) {
        //获取控件
        ptr = view.findViewById(R.id.ptr);
        //设置允许上下拉加载
        ptr.setMode(PullToRefreshBase.Mode.BOTH);
        //调用dao层
        dao = new Dao(getActivity());
        //创建集合
        list = new ArrayList<JsonBean.DataBean>();
        //适配器
        myAdapter = new MyAdapter(getActivity(), list);
        ptr.setAdapter(myAdapter);
        ptr.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                page = 0;
                list.clear();
                initData();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                page++;
                initData();
            }
        });

    }

    @Override
    public void initData() {

        if (Net_Worktable.isConn(getActivity())){
            new MyAsyncTask().execute(urlString+page);
        }else{
            Toast.makeText(getActivity(),"网络中断",Toast.LENGTH_LONG).show();
            Cursor query = dao.query("bw", null, null, null, null, null, null );
            if (query.moveToFirst()){
                do {
                    String news_title = query.getString(query.getColumnIndexOrThrow("news_title"));
                    String pic_url = query.getString(query.getColumnIndexOrThrow("pic_url"));
                    list.add(new JsonBean.DataBean("",news_title,"",pic_url));
                }while (query.moveToNext());
                myAdapter.notifyDataSetChanged();
            }
        }
    }

    @Override
    public int getLayoutID() {


        return R.layout.frag_one;
    }
    class MyAsyncTask extends AsyncTask<String,Void,String>{

        @Override
        protected String doInBackground(String... strings) {
            String s = Net_Uitls.string(strings[0]);
            return s;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
            List<JsonBean.DataBean> data = jsonBean.getData();
            for (int i = 0;i< data.size();i++){
                ContentValues values = new ContentValues();
                values.put("news_title",data.get(i).getNews_title());
                values.put("pic_url",data.get(i).getPic_url());
                dao.insert("bw",null,values);
            }
            list.addAll(data);
            myAdapter.notifyDataSetChanged();
            myAdapter = new MyAdapter(getActivity(), list);
            ptr.onRefreshComplete();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值