实现有网 没网《数据库缓存》

本文介绍了一个Android应用中实现数据加载与刷新功能的具体方法,包括使用PullToRefreshScrollView组件进行下拉刷新和上拉加载更多操作,并展示了如何通过自定义任务处理网络请求及JSON解析流程,同时支持离线模式下从本地数据库读取数据。

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

public class MainActivity extends AppCompatActivity {

    private ListView lv;
    private PullToRefreshScrollView pv;
    private int  num=20;
    private int index=1;
    private String url="http://api.tianapi.com/huabian/?key=fc84984819f14773528f924553db5ff2&num="+num;
    private  List<User_Bean.NewslistBean> list=new ArrayList<>();
    private MyAdapter1 myAdapter1;
    private sqlopenhelper_ sqlopenhelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pv=findViewById(R.id.pv);
        lv=findViewById(R.id.lv);
        //实例化dao包
        sqlopenhelper = new sqlopenhelper_(new Myhelper(MainActivity.this));

        MyTaskjson();
        pv.setMode(PullToRefreshBase.Mode.BOTH);
        pv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
                //下拉加载
                index=1;
                num=20;
url="http://api.tianapi.com/huabian/?key=fc84984819f14773528f924553db5ff2&num="+num;
                MyTaskjson();


            }

            @Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
                //上拉刷新
                index=2;
                num++;
url="http://api.tianapi.com/huabian/?key=fc84984819f14773528f924553db5ff2&num="+num;
                MyTaskjson();



            }
        });

    }

    //解析json串
    private void MyTaskjson() {
        if (MyUtls.isConn(MainActivity.this)){

            MyTask myTask=new MyTask(new MyTask.Indexdata() {
                @Override
                public void Getjson(String jsonstr) {
                    //调取dao包的添加方法 把url地址添加进去
                    sqlopenhelper.Insertdata(url,jsonstr);

                    Gson gson=new Gson();
                    User_Bean user_bean = gson.fromJson(jsonstr, User_Bean.class);
                    List<User_Bean.NewslistBean> newslist = user_bean.getNewslist();
                    if (index==1){
                        list.clear();
                    }
                    list.addAll(newslist);
                    Adapterjson();
                    pv.onRefreshComplete();

                }
            });
            myTask.execute(url);
        }else {
            Toast.makeText(MainActivity.this,"---链接不到网络,从数据库查询---",Toast.LENGTH_SHORT).show();

            //调取dao包的查看方法 把url地址添加进去
            String selectdata = sqlopenhelper.Selectdata(url);
            Gson gson=new Gson();
            User_Bean user_bean = gson.fromJson(selectdata, User_Bean.class);
            List<User_Bean.NewslistBean> newslist = user_bean.getNewslist();
            if (index==1){
                list.clear();
            }
            list.addAll(newslist);
            Adapterjson();
            pv.onRefreshComplete();
        }


    }

    //适配器
    public void Adapterjson(){
        if (myAdapter1==null){
            myAdapter1 = new MyAdapter1(MainActivity.this,list);
            lv.setAdapter(myAdapter1);
        }
        myAdapter1.notifyDataSetChanged();

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值