package com.bwei.day04_utils_cache;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import com.google.gson.Gson;
import adapters.NewsAdapter;
import beans.NewsBean;
import databases.MyHelper;
import https.HttpConfig;
import utils.HttpUtils;
/**
- 1.完善工具
-
- 2.缓存
- 1.判断网络
- 有–直接请求
- 没有—加载数据库
- 有—拿过来数据库的内容–json
- 没有 -提示
- 思路:
- 1.初始化页面
- 2.写工具类,HttpUtils
-
封装get,post,流转换等方法
- 3.创建数据库的相关类,创建表格
- 4.在MainActivity调用封装好的工具类,判断有没有网
- 5.如果有网,再次调用工具类get请求获取网络请求数据json
-
将数据json解析
-
创建适配器
-
将数据放入适配器,listview设置适配器,展示数据
-
将json数据存入数据库作为缓存数据,方便下次没网的时候获取数据库数据
- 6.如果没有网,去获取数据库的数据
-
同样的,获取的json数据需要解析,展示
*/
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//应用一加载就显示网络数据
final ListView listView = findViewById(R.id.listview);
//初始化数据库
MyHelper myHelper = new MyHelper(this);
final SQLiteDatabase database = myHelper.getReadableDatabase();
//判断有么有网络
HttpUtils httpUtils = HttpUtils.getHttpUtils();
boolean hasNet = httpUtils.hasNet(this);
if (hasNet) {
//如果有网,请求网络
httpUtils.get(HttpConfig.new_url);
//设置监听
httpUtils.setOnHttpLoadListener(new HttpUtils.HttpLoadListener() {
@Override
public void loadSuccess(String json) {
Gson gson = new Gson();
NewsBean newsBean = gson.fromJson(json, NewsBean.class);
if (newsBean.getCode() == 200) {
//保存一份最新的数据
ContentValues values = new ContentValues();
values.put("content", json);
database.insert("mynews", null, values);
//关闭数据库
NewsAdapter adapter = new NewsAdapter(MainActivity.this, newsBean.getNewslist());
listView.setAdapter(adapter);
}
}
// 网络加载失败的回调方法
@Override
public void loadError(String error) {
}
});
} else {
// 没网的时候,去数据库获取缓存数据
Toast.makeText(MainActivity.this, “没网络了”, Toast.LENGTH_SHORT).show();
//请求数据库
Cursor cursor = database.query(“mynews”, null, null, null, null, null, null);
// 移到最后一行,获取最新的缓存数据
boolean b = cursor.moveToLast();
if (b) {
String json = cursor.getString(cursor.getColumnIndex(“content”));
Gson gson = new Gson();
NewsBean newsBean = gson.fromJson(json, NewsBean.class);
if (newsBean.getCode() == 200) {
NewsAdapter adapter = new NewsAdapter(MainActivity.this, newsBean.getNewslist());
listView.setAdapter(adapter);
}
}
}
}
}