GreenDao实现无网展示数据库

先写一个数据库的Bean
添加注解@Entity @id
添加自己需要的数据
生成三个类
判断网络的类
Work
//判断网络
public static boolean newwork(Context context)
{
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
return activeNetworkInfo!=null && activeNetworkInfo.isAvailable();

}

Presenter
public class Presenter {
private final OkHttps okHttps;
MainActivity mainActivity;

public void setData(MainActivity mainActivity) {
    this.mainActivity=mainActivity;
}

public Presenter() {
    okHttps = new OkHttps();
}

public void getData(){
    okHttps.getRequest("http://172.17.8.100/small/commodity/v1/commodityList", Beans.class, new OkHttps.OkCallBack() {
        @Override
        public void onSuccess(Object o) {
            mainActivity.onSuccess(o);
        }
        @Override
        public void failed(Exception e) {
        }
    });
}
public void getBannerData(){
    okHttps.getRequest("http://172.17.8.100/small/commodity/v1/bannerShow", BannerBeans.class, new OkHttps.OkCallBack() {
        @Override
        public void onSuccess(Object o) {
            mainActivity.onBannerSuccess(o);
        }
        @Override
        public void failed(Exception e) {
        }
    });
}

}
MainActivity
public class MainActivity extends AppCompatActivity implements IMainView {

private Presenter presenter;
private Beans.ResultBean result;
private RecyclerView recy_view;
private MyAdapter myAdapter;
private Banner banner;
private DaoMaster.DevOpenHelper helper;
private SQLiteDatabase database;
private DaoMaster master;
private DaoSession session;
private UserDao user;
private User user1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //初始化bean类
     user1 = new User();
    init();
    creataDataBase();
    initData();
    EventBus.getDefault().register(this);
}


private void init() {
    recy_view = findViewById(R.id.recy_view);
    banner = findViewById(R.id.banner);
}

//创建数据库
private void creataDataBase() {
    //创建表
    helper = new DaoMaster.DevOpenHelper(this, "sport-db", null);
    //写入数据
    database = helper.getWritableDatabase();
    master = new DaoMaster(database);
    session = master.newSession();
    user = session.getUserDao();

}

private void initData() {
    recy_view.setLayoutManager(new LinearLayoutManager(this));
    presenter = new Presenter();
    myAdapter = new MyAdapter(this);
    recy_view.setAdapter(myAdapter);
    //判断网络 成功 显示
    boolean b = Work.newwork(this);
    if (b) {
        presenter.setData(this);
        presenter.getData();
        presenter.getBannerData();
    } else {//失败显示数据库中的数据
        //创建集合
        ArrayList<Beans.ResultBean.MlssBean.CommodityListBeanXX> list = new ArrayList<>();
        //List<BannerBeans.ResultBean> list_banner=new ArrayList<>();

        //查询数据库并放入集合
        List<User> list2 = user.queryBuilder().list();
        for (int i = 0; i < list2.size(); i++) {
            //创建对象
          Beans.ResultBean.MlssBean.CommodityListBeanXX beanXX=new Beans.ResultBean.MlssBean.CommodityListBeanXX();
          BannerBeans.ResultBean resultBean = new BannerBeans.ResultBean();
            //写入数据
            beanXX.setCommodityName(list2.get(i).getCommodityName());
            beanXX.setMasterPic(list2.get(i).getMasterPic());
            beanXX.setPrice(list2.get(i).getPrice());
            //id替换pid  重要的
            beanXX.setCommodityId((int) list2.get(i).getId());
           /* resultBean.setTitle(list2.get(i).getTitle());
           resultBean.setImageUrl(list2.get(i).getImageUrl());*/
           list.add(beanXX);
           //list_banner.add(resultBean);
        }
        myAdapter.setData(list);
      // addBanner();
    }
}

@Override
public void onSuccess(Object o) {
    Beans beans = (Beans) o;
    Beans.ResultBean.MlssBean mlss = beans.getResult().getMlss();
    List<Beans.ResultBean.MlssBean.CommodityListBeanXX> list = mlss.getCommodityList();

    for (int i = 0; i < list.size(); i++) {
        Log.i("dddd", "onSuccess: "+list.get(i).getCommodityName());
        user1.setCommodityName(list.get(i).getCommodityName());
        user1.setMasterPic(list.get(i).getMasterPic());
        user1.setPrice(list.get(i).getPrice());
        user1.setId(list.get(i).getCommodityId());
        // 添加或者替换
        user.insertOrReplace(user1);
    }
    myAdapter.setData(list);
}

@Override
public void onBannerSuccess(Object o) {
    BannerBeans bannerBeans = (BannerBeans) o;
    List<BannerBeans.ResultBean> result = bannerBeans.getResult();
    Log.i("ssss", "onSuccess2: " + result.get(0).getImageUrl());
    //添加数据库
    for (int i = 0; i < result.size(); i++) {
        //添加或者替换
      /* user1.setImageUrl(result.get(i).getImageUrl());
        user1.setTitle(result.get(i).getTitle());
        user.insertOrReplace(user1);*/
    }
    addBanner(result);
}

private void addBanner(List<BannerBeans.ResultBean> result) {
    List<String> list = new ArrayList<>();
    List<String> list2 = new ArrayList<>();
    //设置图片网址或地址的集合
    //设置轮播图的标题集合
    for (int i = 0; i < result.size(); i++) {
        String title = result.get(i).getTitle();
        String imageUrl = result.get(i).getImageUrl();
        list.add(imageUrl);
        list2.add(title);
    }
    //设置内置样式
    banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
    //设置图片加载器,图片加载器在下方
    banner.setImageLoader(new ImageLoader() {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with(context).load(path).into(imageView);
        }
    });
    //添加图片
    banner.setImages(list);
    //设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验
    banner.setBannerAnimation(Transformer.ScaleInOut);
   //设置文字
    banner.setBannerTitles(list2);
    //设置轮播间隔时间
    banner.setDelayTime(3000);
    //设置是否为自动轮播,默认是“是”。
    //banner.isAutoPlay(true);
    //设置指示器的位置,小点点,左中右。
    banner.start();
}
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
public void getMessage(String msg){
    Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}

Adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
MainActivity mainActivity;
public MyAdapter(MainActivity mainActivity) {
this.mainActivity=mainActivity;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View inflate = LayoutInflater.from(mainActivity).inflate(R.layout.item, null);
    ViewHolder viewHolder = new ViewHolder(inflate);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder,final int i) {

    viewHolder.text_view.setText(list.get(i).getCommodityName());
    viewHolder.text_view2.setText("¥:"+list.get(i).getPrice());
    Glide.with(mainActivity).load(list.get(i).getMasterPic()).into(viewHolder.img_view);
    viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EventBus.getDefault().postSticky(list.get(i).getCommodityName());
        }
    });

}

@Override
public int getItemCount() {
    return list.size();
}
List<ShopBean.ResultBean.MlssBean.CommodityListBeanXX> list=new ArrayList<>();
public void setData(List<ShopBean.ResultBean.MlssBean.CommodityListBeanXX> result) {
    if (result!=null){
        this.list.clear();
        this.list.addAll(result);
        notifyDataSetChanged();
    }
}


public class ViewHolder extends RecyclerView.ViewHolder {

    private final TextView text_view;
    private final TextView text_view2;
    private final ImageView img_view;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        text_view = itemView.findViewById(R.id.text_view);
        text_view2 = itemView.findViewById(R.id.text_view2);
        img_view = itemView.findViewById(R.id.img_view);
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值