无网缓存Demo(没实现无网展示轮播图)

 ok的二次封装

package bwie.com.zk03_last.okhttp;

import android.text.TextUtils;
import android.util.Log;

import com.orhanobut.logger.Logger;

import java.util.concurrent.TimeUnit;

import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.logging.HttpLoggingInterceptor;


public class OkHttp {
    private static OkHttp instance;
    private static OkHttpClient okHttpClient;

    //单例模式
    public static OkHttp getInstance(){
        if (instance!=null){
            synchronized (OkHttp.class){
                if (instance==null){
                    instance = new OkHttp();
                }
            }
        }
        return instance;
    }
    //网络连接
    private OkHttp(){
        OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
        builder.writeTimeout(10,TimeUnit.SECONDS);
        builder.readTimeout(10,TimeUnit.SECONDS);
        builder.connectTimeout(10,TimeUnit.SECONDS);
        builder.addInterceptor(new HeaderInterceptor());;
        builder.addInterceptor(new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
               if (message.startsWith("{")||message.startsWith("[")){
                   Logger.json(message);
               }else {
                   Logger.i(message);
               }
            }
        }).setLevel(HttpLoggingInterceptor.Level.BODY));
        okHttpClient = builder.build();
    }
    public static void doGet(String url, Callback callback){
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder().url(url).build();
        okHttpClient.newCall(request).enqueue(callback);
    }
    public static void doPost(String url,String phone,String pwd,Callback callback){
        FormBody build = new FormBody.Builder().add("phone", phone).add("pwd", pwd).build();
        Request request = new Request.Builder().url(url).post(build).build();
        okHttpClient.newCall(request).enqueue(callback);
    }

}

mvp略过

mainactivity 


package bwie.com.zk03_last;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.stx.xhb.xbanner.XBanner;

import java.util.ArrayList;
import java.util.List;

import bwie.com.zk03_last.adapter.GreenAdapter;
import bwie.com.zk03_last.adapter.ShowAdapter;
import bwie.com.zk03_last.bean.BannerBean;
import bwie.com.zk03_last.bean.GreenDaoBean;
import bwie.com.zk03_last.bean.ShowBean;
import bwie.com.zk03_last.greenDao.DaoSession;
import bwie.com.zk03_last.greenDao.GreenDaoBeanDao;
import bwie.com.zk03_last.mvp.presenter.Presenter;
import bwie.com.zk03_last.okhttp.Net;

public class MainActivity extends AppCompatActivity {

    private XBanner xbanner;
    private RecyclerView recycle;
    private Presenter presenter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        xbanner = findViewById(R.id.xbanner);
        recycle = findViewById(R.id.recycle);
        presenter = new Presenter(this);
        boolean b = Net.isnetwork(this);

        presenter.ShowPre();
        presenter.Banner();
        if (!b){
            Toast.makeText(this, "没网", Toast.LENGTH_SHORT).show();
            DaoSession daoSession = Fresco.daoSession;
            GreenDaoBeanDao greenDaoBeanDao = daoSession.getGreenDaoBeanDao();
            List<GreenDaoBean> greenDaoBeans = greenDaoBeanDao.loadAll();
            if (!greenDaoBeans.isEmpty()){
                GreenAdapter greenAdapter = new GreenAdapter(MainActivity.this,greenDaoBeans);
                recycle.setAdapter(greenAdapter);
            }
        }
        recycle.setLayoutManager(new GridLayoutManager(MainActivity.this, 2));
    }
    public void ShowView(final String data) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                ShowBean showBean = gson.fromJson(data, ShowBean.class);
                List<ShowBean.ResultBean> list = showBean.getResult();
                DaoSession daoSession = Fresco.daoSession;
                for (int i = 0; i < list.size(); i++) {
                    GreenDaoBean bean = new GreenDaoBean();
                    bean.setImage(list.get(i).getImageUrl());
                    bean.setName(list.get(i).getName());
                    daoSession.insert(bean);
                }
                ShowAdapter showAdapter = new ShowAdapter(MainActivity.this,list);
                recycle.setAdapter(showAdapter);
            }
        });
    }

    public void BannerView(final String data) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                final List<String> list = new ArrayList<>();
                BannerBean bannerBean = gson.fromJson(data, BannerBean.class);
                final List<BannerBean.ResultBean> result = bannerBean.getResult();
                for (int i = 0; i < result.size(); i++) {
                    list.add(result.get(i).getImageUrl());

                }
                xbanner.setData(list,null);
                xbanner.setPoinstPosition(XBanner.RIGHT);
                xbanner.setmAdapter(new XBanner.XBannerAdapter() {
                    @Override
                    public void loadBanner(XBanner banner, View view, int position) {
                        Glide.with(MainActivity.this).load(list.get(position)).into((ImageView) view);
                    }
                });
            }
        });

    }
}

adapter 

package bwie.com.zk03_last.adapter;

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.ImageView;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

import bwie.com.zk03_last.MainActivity;
import bwie.com.zk03_last.R;
import bwie.com.zk03_last.bean.ShowBean;

public class ShowAdapter extends RecyclerView.Adapter<ShowAdapter.ViewHolder> {
    Context context;
    List<ShowBean.ResultBean>list;

    public ShowAdapter(Context context, List<ShowBean.ResultBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(viewGroup.getContext(), R.layout.item_show, null);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        viewHolder.name.setText(list.get(i).getName());
        viewHolder.price.setText(list.get(i).getId()+"");
        viewHolder.img.setImageURI(list.get(i).getImageUrl());

    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private SimpleDraweeView img;
        private TextView name;
        private TextView price;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            name = itemView.findViewById(R.id.name);
            price = itemView.findViewById(R.id.price);
        }
    }
}

集成greendao

package bwie.com.zk03_last.bean;

import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Generated;

@Entity
public class GreenDaoBean {
    private String name;
    private String imageUrl;
    private String image;
    @Generated(hash = 1490715328)
    public GreenDaoBean(String name, String imageUrl, String image) {
        this.name = name;
        this.imageUrl = imageUrl;
        this.image = image;
    }
    @Generated(hash = 826843181)
    public GreenDaoBean() {
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getImageUrl() {
        return this.imageUrl;
    }
    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
    public String getImage() {
        return this.image;
    }
    public void setImage(String image) {
        this.image = image;
    }



}
package bwie.com.zk03_last.okhttp;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
//网络封装判断有没有网
public class Net {
    public static boolean isnetwork(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        if (activeNetworkInfo != null) {
            return true;
        }
        return false;
    }
}

 

 

然后初始化 

package bwie.com.zk03_last;

import android.app.Application;
import android.database.sqlite.SQLiteDatabase;

import bwie.com.zk03_last.greenDao.DaoMaster;
import bwie.com.zk03_last.greenDao.DaoSession;
public class Fresco extends Application {

    public static DaoSession daoSession;
    //fresco
    @Override
    public void onCreate() {
        super.onCreate();
        com.facebook.drawee.backends.pipeline.Fresco.initialize(this);
        initGreenDao();
    }
    //greendao初始化
    private void initGreenDao() {
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "aaa.db");
        SQLiteDatabase writableDatabase = devOpenHelper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(writableDatabase);
        daoSession = daoMaster.newSession();
    }
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值