数据库 MVP实现

一 ·
public class MainActivity extends AppCompatActivity implements CollectionInterFace.MyViewInterFace{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
Fresco.initialize (this);
setContentView (R.layout.activity_main);
presenterInterFace = new Presenter (this);
ButterKnife.bind (this);
GridLayoutManager layoutManage = new GridLayoutManager (this, 2);
layoutManage.setOrientation (LinearLayoutManager.VERTICAL);
recycler.addItemDecoration (new DividerItemDecoration (MainActivity.this, DividerItemDecoration.VERTICAL));
recycler.addItemDecoration (new DividerItemDecoration (MainActivity.this, DividerItemDecoration.HORIZONTAL));
recycler.setLayoutManager (layoutManage);
if (isWifiConnected (this)) {
presenterInterFace.toPresenter (1);
presenterInterFace.onBanner ();
} else {
List dayStepDao = App.daoSession.loadAll (DayStep.class);
for (int i = 0; i < dayStepDao.size (); i++) {
Product.ResultBean resultBean = new Product.ResultBean ();
resultBean.setName (dayStepDao.get (i).getTitle ());
resultBean.setImageUrl (dayStepDao.get (i).getImgUrl ());
mlist.add (resultBean);
}
myAdapter = new MyAdapter (this, mlist);
recycler.setAdapter (myAdapter);
}
myAdapter = new MyAdapter (this, mlist);
recycler.setAdapter (myAdapter);
myAdapter.notifyDataSetChanged ();
}
@Override
public void toShou(Object o) {
Product product = (Product) o;
mlist.addAll (product.getResult ());
myAdapter.notifyDataSetChanged ();
}

@Override
public void toBan(Bann bann) {
    banner.setImageLoader (new ImageLoader () {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with (context).load (path).into (imageView);
        }
    });
    for (Bann.ResultBean bean : bann.getResult ()) {
        String image = bean.getImageUrl ();
        list.add (image);
    }
    banner.setImages (list);
    banner.start ();
}
//判断网络可用
public boolean isWifiConnected(Context context) {
    if (context != null) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
        NetworkInfo mNetworInfo = connectivityManager.getNetworkInfo (ConnectivityManager.TYPE_WIFI);
        if (mNetworInfo != null) {
            return mNetworInfo.isAvailable ();
        }
    }
    return false;
}

}
OkHttpUtile

public class OkHttpUtile {

    OkHttpClient okHttpClient;
    public static OkHttpUtile utile;
    private OkHttpUtile(){
        okHttpClient = new OkHttpClient.Builder ().addInterceptor (new Interceptor () {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request =chain.request ().newBuilder ()
                        .addHeader ("userId","11249")
                        .addHeader ("sessionId","13466907855")
                        .build ();
                Log.e ("tag",request.toString ());

                Response proceed = chain.proceed (request);
                Log.e ("tag",proceed.toString ());
                return proceed;
            }
        }).build ();
    }

    public static synchronized OkHttpUtile getInstance(){
        if(utile == null){
            utile = new OkHttpUtile ();
        }
        return utile;
    }

    public void doGet(String url,Callback callback){

        Request request = new Request.Builder ()
                .get ()
                .url (url)
                .build ();

        Call call = okHttpClient.newCall (request);
        call.enqueue (callback);
    }

}

Model
public class MyModel {

MyCallBack callBack;
MyCallBack callBreakBanner;
@SuppressLint("HandlerLeak")
Handler mhandler = new Handler (){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage (msg);
        int type = msg.arg1;
        String json = (String) msg.obj;
        Gson gson = new Gson ();
        if(type == 1) {
            Product product = gson.fromJson (json, Product.class);
            callBack.success (product);
        }else{
            Bann bann = gson.fromJson (json, Bann.class);
            callBreakBanner.success (bann);
        }
    }
};

public void doRequest(final int rtype, String url, MyCallBack callBack){
    if(rtype == 1){
        this.callBack=callBack;
    }else{
        this.callBreakBanner = callBack;
    }
    OkHttpUtile utile = OkHttpUtile.getInstance ();
    utile.doGet (url, new Callback () {
        @Override
        public void onFailure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String string = response.body().string();
            Message message=new Message();
            message.obj=string;
            message.arg1 = rtype;
            mhandler.sendMessage(message);
        }
    });
}

public interface MyCallBack{
    public void success(Object o);
}

}

Presenter
public class Presenter implements CollectionInterFace.PresenterInterFace {

T tt;
MyModel myModel;
CollectionInterFace.MyViewInterFace myViewInterFace;
public Presenter(T t){
    this.tt = t;
    myModel = new MyModel ();
}

@Override
public void toPresenter(int page) {
    myModel.doRequest (1, "http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?page=1&count=20", new MyModel.MyCallBack () {
        @Override
        public void success(Object o) {
            myViewInterFace = (CollectionInterFace.MyViewInterFace) tt;
            myViewInterFace.toShou (o);
        }
    });

}

public void onBanner(){
    String URL= "http://172.17.8.100/small/commodity/v1/bannerShow";
    myModel.doRequest (2, URL, new MyModel.MyCallBack () {
        @Override
        public void success(Object o) {
            myViewInterFace = (CollectionInterFace.MyViewInterFace) tt;
           myViewInterFace.toBan ((Bann) o);
        }
    });
}

}

Collection
public interface CollectionInterFace {

public interface MyViewInterFace {
    public void toShou(Object o);

    public void toBan(Bann bann);
}

public interface PresenterInterFace{

    public void toPresenter(int page);

    public void onBanner();
}

}

App
public class App extends Application {

public static DaoSession daoSession;
@Override
public void onCreate() {
    super.onCreate ();

    DaoMaster.DevOpenHelper devOpenHelper=new DaoMaster.DevOpenHelper(this,"mydb");
    SQLiteDatabase sqLiteDatabase=devOpenHelper.getWritableDatabase();
    DaoMaster daoMaster = new DaoMaster(sqLiteDatabase);
    daoSession=daoMaster.newSession();

    //
    DiskCacheConfig diskCacheConfig=DiskCacheConfig.newBuilder(this)
            .setBaseDirectoryPath(this.getApplicationContext().getCacheDir())
            .setBaseDirectoryName("com.bawei.huancun")
            .setMaxCacheSizeOnLowDiskSpace(60* ByteConstants.MB)
            .setMaxCacheSizeOnVeryLowDiskSpace(20*ByteConstants.MB)
            .build();
    ImagePipelineConfig build= ImagePipelineConfig.newBuilder(this)
            .setMainDiskCacheConfig(diskCacheConfig)
            .build();
    Fresco.initialize(this,build);

}

}

Bean
@Entity
public class DayStep {

@Id
private long id;
private String imgUrl;
private String title;
@Generated(hash = 117380388)
public DayStep(long id, String imgUrl, String title) {
    this.id = id;
    this.imgUrl = imgUrl;
    this.title = title;
}
@Generated(hash = 121003456)
public DayStep() {
}
public long getId() {
    return this.id;
}
public void setId(long id) {
    this.id = id;
}
public String getImgUrl() {
    return this.imgUrl;
}
public void setImgUrl(String imgUrl) {
    this.imgUrl = imgUrl;
}
public String getTitle() {
    return this.title;
}
public void setTitle(String title) {
    this.title = title;
}

}

MyAdapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holde> {

Context context;
List<Product.ResultBean> list;
DayStepDao dayStepDao;

public MyAdapter(Context context, List<Product.ResultBean> list) {
    this.context = context;
    this.list = list;
    dayStepDao = App.daoSession.getDayStepDao ();
    dayStepDao.deleteAll ();
}

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

@Override
public void onBindViewHolder(@NonNull Holde holde, int i) {
    holde.text1.setText (list.get (i).getName ());
    holde.simpledraweeview_id.setImageURI(list.get(i).getImageUrl());

    DayStep dayStep = new DayStep ();
    dayStep.setId (list.get (i).getId ());
    dayStep.setImgUrl (list.get (i).getImageUrl ());
    dayStep.setTitle (list.get (i).getName ());
    dayStepDao = App.daoSession.getDayStepDao ();
    dayStepDao.insert (dayStep);
}

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

public class Holde extends RecyclerView.ViewHolder {
    TextView text1,pic;
    SimpleDraweeView simpledraweeview_id;
    public Holde(@NonNull View itemView) {
        super (itemView);
        text1 = itemView.findViewById (R.id.text1);
        simpledraweeview_id = itemView.findViewById (R.id.simpledraweeview_id);
        pic = itemView.findViewById (R.id.pic);
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值