在项目下
-----------在repositories的括号里加入仓库----
mavenCentral()
------------- 在dependencies的括号里加入插件---------
classpath ‘org.greenrobot:greendao-gradle-plugin:3.2.2’
---------------在app里的build最上面---------------------
apply plugin: ‘org.greenrobot.greendao’
----------------app里的build加依赖----------------------
implementation ‘org.greenrobot:greendao:3.2.2’
----------------在dependencies的上面-----------包名改了!!!去清单文件里复制
greendao {
schemaVersion 1 //版本
daoPackage ‘包名.greendao’ // 一般为app包名+生成文件的文件夹名
targetGenDir ‘src/main/java’ //生成文件路径
}
implementation 'com.facebook.fresco:fresco:1.11.0'
import android.app.Application;
import com.facebook.drawee.backends.pipeline.Fresco;
//继承application
public class APP extends Application {
//重写oncreate方法
@Override
public void onCreate() {
super.onCreate();
//初始化和记得去清单文件设置name
Fresco.initialize(this);
}
}
android:name=".APP"
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;
@Entity
public class JsonBean {
//封装大long 的id 和字符串json
//注解@Id 括号auto 主键自增 为真 方法上面在注解@entity 在ctrl+fn+f9自动生成
@Id(autoincrement = true)
private Long id;
private String json;
@Generated(hash = 595762614)
public JsonBean(Long id, String json) {
this.id = id;
this.json = json;
}
@Generated(hash = 1926928967)
public JsonBean() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getJson() {
return this.json;
}
public void setJson(String json) {
this.json = json;
}
}
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import java.util.List;
public class JsonBeanUtils {
private static JsonBeanUtils jsonBeanUtils;
private JsonBeanDao jsonBeanDao;
//本类构造改成私有的private
private JsonBeanUtils() {
}
//公共静态本类的名字 加个get 大小括号
public static JsonBeanUtils getJsonBeanUtils(){
//判断 提上去的类名 ==空
if(jsonBeanUtils==null){
//new 本类名 返回值 提上去
jsonBeanUtils = new JsonBeanUtils();
}
//返回提上去的类名
return jsonBeanUtils;
};
//公共的 初始化方法 括号里传上下文
public void init(Context context){
//实例化dao master 里的方法大写D 删了括号。大写D 括号传上下文和引号数据库名 返回值
DaoMaster.DevOpenHelper mmm = new DaoMaster.DevOpenHelper(context, "mmm");
//用mmm获取读写 返回值 db
SQLiteDatabase db = mmm.getWritableDatabase();
//实例化dao master 传db
DaoMaster daoMaster = new DaoMaster(db);
//调用daomater 里的newsession .获取本类名 提上去
jsonBeanDao = daoMaster.newSession().getJsonBeanDao();
}
//公共的添加方法 传一个对象jsonbean
public void insert(JsonBean jsonBean){
//调用jsonbean dao 里的方法 insert 传对象JSoneban
jsonBeanDao.insert(jsonBean);
}
//查询全部方法 不传东西
public List select(){
//直接返回json bean dao lodall 强转
return jsonBeanDao.loadAll();
}
//单个查询 传字符型 key selectById
public JsonBean selectById(String key){
//直接返回json bean dao lode 强转大写long .p 传key
return jsonBeanDao.load(Long.parseLong(key));
}
//删除方法传 字符型key
public void delete(String key){
//调用惊悚beandao 删除bykey 括号里先大写long .parselong 传key
jsonBeanDao.deleteByKey(Long.parseLong(key));
}
//删除全部 不传
public void deleteAll(){
//直接调用删除all 全部
jsonBeanDao.deleteAll();
}
//修改方法 传对象
public void update(JsonBean jsonBean){
//调用jsonbeandao update 传对象
jsonBeanDao.update(jsonBean);
}
}
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
public class MyAdapter extends RecyclerView.Adapter {
private Context context;
private List list;
public MyAdapter(Context context, List list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyViewHodler onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.layout_news, null);
MyViewHodler myViewHodler = new MyViewHodler(view);
return myViewHodler;
}
@Override
public void onBindViewHolder(@NonNull MyViewHodler myViewHodler, int i) {
myViewHodler.mTitle.setText(list.get(i).getTitle());
myViewHodler.mDesc.setText(list.get(i).getDesc());
myViewHodler.mSimpleDraweeView.setImageURI(list.get(i).getImage());
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHodler extends RecyclerView.ViewHolder {
TextView mTitle, mDesc;
SimpleDraweeView mSimpleDraweeView;
public MyViewHodler(@NonNull View itemView) {
super(itemView);
mSimpleDraweeView = (SimpleDraweeView) itemView.findViewById(R.id.simple);
mTitle = (TextView) itemView.findViewById(R.id.title);
mDesc = (TextView) itemView.findViewById(R.id.desc);
}
}
}
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.google.gson.Gson;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recycler;
private String url1="请求数据的网址";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 先初始化工具类 传 上下文
JsonBeanUtils.getJsonBeanUtils().init(this);
//找控件提上去
recycler=(RecyclerView)findViewById(R.id.recycler);
//new 线性 传本页面
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//设置方向
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//给recycler设置线性布局
recycler.setLayoutManager(linearLayoutManager);
//判断网络请求 括号里调用判断网络的方法
if(isConnected(this)){
//为真就请求数据
//请求网络数据
dohttp();
}else{
//为假
//调用工具类的查询 获取0 获取json 返回字符串
String json = JsonBeanUtils.getJsonBeanUtils().select().get(0).getJson();
//复制下面的适配器 把s1改了json
//new gson from 传字符串和bean类
Bean bean = new Gson().fromJson(json, Bean.class);
//调用bean类的集合返回集合
List items = bean.getItems();
//设置适配器 传本页面和集合
MyAdapter myAdapter=new MyAdapter(MainActivity.this,items);
//给recycler设置适配器
recycler.setAdapter(myAdapter);
}
}
private void dohttp() {
//new 工具类
new OkHttpUtils().get(url1).result(new OkHttpUtils.OkHttpListener() {
@Override
public void success(String s1) {
//实例化对象jsonbean
JsonBean jsonBean=new JsonBean();
//往对象里面传s1
jsonBean.setJson(s1);
//调用工具类的添加方法 括号里传对象 在这个上面实例化jsonbean 对象
JsonBeanUtils.getJsonBeanUtils().insert(jsonBean);
//new gson from 传字符串和bean类
Bean bean = new Gson().fromJson(s1, Bean.class);
//调用bean类的集合返回集合
List items = bean.getItems();
//设置适配器 传本页面和集合
MyAdapter myAdapter=new MyAdapter(MainActivity.this,items);
//给recycler设置适配器
recycler.setAdapter(myAdapter);
}
});
}
/**
* 检查是否连接网络
*
* @param context
* @return
*/
public static boolean isConnected(Context context) {
ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mobNetInfo != null && mobNetInfo.isConnected()) {
return true;
}
if (wifiNetInfo != null && wifiNetInfo.isConnected()) {
return true;
}
return false;
}
}