数据库缓存

第一步DBHelper

public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL("create table news (id integer primary key autoincrement,data text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

第二步DBUtils

public class DBUtils {

    private SQLiteDatabase db;


    public DBUtils(Context context){
        DBHelper dbHelper = new DBHelper(context,"news,db",null,1);
        db = dbHelper.getWritableDatabase();
    }
    public void insert(String data){
        ContentValues values = new ContentValues();
        values.put("data",data);
        db.insert("news",null,values);
    }
    public String query(){
        String data ="";
        Cursor cursor = db.rawQuery("select data from news", null);
        while (cursor.moveToNext()){
            data = cursor.getString(cursor.getColumnIndex("data"));
        }
        return data;
    }
}

第三步

package com.duwei.duwei20180921.fragment;


import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import com.duwei.duwei20180921.MainActivity;
import com.duwei.duwei20180921.R;
import com.duwei.duwei20180921.WebActivity;
import com.duwei.duwei20180921.adapter.MyTouTiaoAdapter;
import com.duwei.duwei20180921.bean.Bean;
import com.duwei.duwei20180921.db.DBUtils;
import com.duwei.duwei20180921.net.NetUtils;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.util.ArrayList;
import java.util.List;

/**
 * A simple {@link Fragment} subclass.
 */
public class TouTiaoFragment extends Fragment {

    private DBUtils dbUtils;
    private SharedPreferences sharedPreferences;
    private PullToRefreshListView pull_list;
    private String url = "http://www.xieast.com/api/news/news.php?type=top&page=";
    private int page = 1;
    private NetUtils netUtils = new NetUtils();
    private List<Bean.DataBean> list = new ArrayList<>();
    private MyTouTiaoAdapter adapter;

    public TouTiaoFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_tou_tiao, container, false);
        pull_list =view.findViewById(R.id.pull_list);
        dbUtils = new DBUtils(getActivity());
        return view;
    }


    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        pull_list.setMode(PullToRefreshBase.Mode.BOTH);
        pull_list.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo info = connectivityManager.getActiveNetworkInfo();
                if (info!= null && info.isAvailable()) {
                    page = 1;
                    doHttp();
                }else{
                   Toast.makeText(getActivity(),"无网络",Toast.LENGTH_LONG).show();
                    pull_list.onRefreshComplete();
                }
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo info = connectivityManager.getActiveNetworkInfo();
                if (info!= null && info.isAvailable()) {
                    page++;
                    doHttp();
                }else{
                    Toast.makeText(getActivity(),"无网络",Toast.LENGTH_LONG).show();
                    pull_list.onRefreshComplete();
                }
            }
        });

        adapter = new MyTouTiaoAdapter(list,getActivity());
        pull_list.setAdapter(adapter);
        pull_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent = new Intent(getActivity(),WebActivity.class);
                intent.putExtra("url",list.get(i).getUrl());
                startActivity(intent);
            }
        });

        //判断是否联网
        doHttp();
    }

    private void doHttp() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();
        if (info!= null && info.isAvailable()) {
            Toast.makeText(getActivity(),"有网",Toast.LENGTH_SHORT).show();

            //调用网络工具类
            netUtils.getDataFromServer(url+page);
            netUtils.setNetCallBack(new NetUtils.NetCallBack() {
                @Override
                public void onSuccess(String result) {

                    /*sharedPreferences = getActivity().getSharedPreferences("info", Context.MODE_PRIVATE);
                    sharedPreferences.edit().putString("data",result).commit();*/
                    dbUtils.insert(result);
                    Gson gson = new Gson();
                    Bean bean = gson.fromJson(result, Bean.class);
                    if (page ==1){
                        list.clear();
                    }
                    list.addAll(bean.getData());
                    adapter.notifyDataSetChanged();

                    pull_list.onRefreshComplete();
                }
            });
        }else{
            /*String data = getActivity().getSharedPreferences("info", Context.MODE_PRIVATE).getString("data", "");*/
            String data = dbUtils.query();
            Gson gson = new Gson();
            Bean bean = gson.fromJson(data, Bean.class);
            if (page ==1){
                list.clear();
            }
            list.addAll(bean.getData());
            adapter.notifyDataSetChanged();
            pull_list.onRefreshComplete();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42234894/article/details/82831408
今日推荐