greenDao 数据库框架简单使用和Fresco 简单加载图片

首先

在项目下
-----------在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’ //生成文件路径
}

先引入fresco 依赖

implementation 'com.facebook.fresco:fresco:1.11.0'

再写个APP 类 和去清单文件写name

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

清单文件的name

 android:name=".APP"

先封装网址数据的bean 此处省略

在封装单例模式JsonBean

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

然后会自动生成是三个类

在这里插入图片描述

在写两个工具类一个okHttpUtils此处省略

另一个JsonBeanUtils 工具类 有增删改查

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

主页面布局

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recycler"
    ></android.support.v7.widget.RecyclerView>

Recycler 条目布局 图片控件Fresco中的SimpleDraweeView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/simple"
    android:layout_width="80dp"
    android:layout_height="80dp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="1"
        android:textColor="#222222"
        android:textSize="16sp" />
        
    <TextView
        android:id="@+id/desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="1"
        android:textColor="#999999"
        android:textSize="14sp" />
</LinearLayout>
</LinearLayout>

适配器

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<MyAdapter.MyViewHodler> {

private Context context;
private List<Bean.ItemsBean> list;

public MyAdapter(Context context, List<Bean.ItemsBean> 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);
    }
}
}

主页面Activity

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<Bean.ItemsBean> 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<Bean.ItemsBean> 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;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43143884/article/details/83660746