LGAsyncTask接口回调使用专项练习(一)

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);
}
}
}

}

}

猜你喜欢

转载自blog.csdn.net/LG_lxb/article/details/83718453