//model层
package com.bawie.zhoukaomoni.mvp.model;
/**
-
@Author:asus
-
@E-mail: 945574298@163.com
-
@Date:2019/3/16 14:20
-
@Description:描述信息
*/
public interface IModel {
void getModel(ModelCallBack modelCallBack);
interface ModelCallBack{
void onSuccess(Object data);
void onFail(Exception e);}
}
//model实现类‘’
package com.bawie.zhoukaomoni.mvp.model;
import com.bawie.zhoukaomoni.bean.ShopBean;
import com.bawie.zhoukaomoni.http.OkHttp;
/**
-
@Author:asus
-
@E-mail: 945574298@163.com
-
@Date:2019/3/16 14:24
-
@Description:描述信息
*/
public class IModelImpl implements IModel {
String Base_url=“http://172.17.8.100/small/commodity/v1/commodityList”;
@Override
public void getModel(final ModelCallBack modelCallBack) {
OkHttp.getInstance().doGet(Base_url, ShopBean.class, new OkHttp.NetCallBack() {
@Override
public void LoadSuccess(Object obj) {
modelCallBack.onSuccess(obj);} @Override public void LoadFail() { } });
}
}
//presenter
package com.bawie.zhoukaomoni.mvp.presenter;
import com.bawie.zhoukaomoni.mvp.view.Iview;
/**
- @Author:asus
- @E-mail: 945574298@163.com
- @Date:2019/3/16 14:22
- @Description:描述信息
*/
public interface Ipresenter {
void getPreData();
void attchView(Iview iview);
void Detchview(Iview iview);
}
//presenter实现类
package com.bawie.zhoukaomoni.mvp.presenter;
import com.bawie.zhoukaomoni.MainActivity;
import com.bawie.zhoukaomoni.mvp.model.IModel;
import com.bawie.zhoukaomoni.mvp.model.IModelImpl;
import com.bawie.zhoukaomoni.mvp.view.Iview;
import java.lang.ref.SoftReference;
/**
-
@Author:asus
-
@E-mail: 945574298@163.com
-
@Date:2019/3/16 14:29
-
@Description:描述信息
*/
public class IpresenterImpl implements Ipresenter {private IModelImpl iModel;
MainActivity mainActivity;
private SoftReference iModelSoftReference;@Override
public void getPreData() {
iModel.getModel(new IModel.ModelCallBack() {
@Override
public void onSuccess(Object data) {
mainActivity.getView(data);
}@Override public void onFail(Exception e) { }
});
}@Override
public void attchView(Iview iview) {
this.mainActivity= (MainActivity) iview;
iModel = new IModelImpl();
iModelSoftReference = new SoftReference(iModel);}
@Override
public void Detchview(Iview iview) {
iview = null;
}
}
//view层
package com.bawie.zhoukaomoni.mvp.view;
/**
- @Author:asus
- @E-mail: 945574298@163.com
- @Date:2019/3/16 14:23
- @Description:描述信息
*/
public interface Iview {
void getView(Object data);
}
//okhttp
package com.bawie.zhoukaomoni.http;
/**
- @Author:asus
- @E-mail: 945574298@163.com
- @Date:2019/3/16 14:13
- @Description:描述信息
*/
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import com.google.gson.Gson;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttp {
private OkHttpClient client;
private static volatile OkHttp instance;
private Handler handler = new Handler();
//创建拦截器
private Interceptor getAppInterceptor() {
Interceptor interceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Log.e("++++++", "拦截前");
Response response = chain.proceed(request);
Log.e("++++++", "拦截后");
return response;
}
};
return interceptor;
}
//添加拦截器
private OkHttp() {
File file = new File(Environment.getExternalStorageDirectory(), "cache1");
client = new OkHttpClient().newBuilder()
.readTimeout(3000, TimeUnit.SECONDS)
.connectTimeout(3000, TimeUnit.SECONDS)
.addInterceptor(getAppInterceptor())
.cache(new Cache(file, 10 * 1024))
.build();
}
//创建单例
public static OkHttp getInstance() {
if (instance == null) {
synchronized (OkHttp.class) {
if (null == instance) {
instance = new OkHttp();
}
}
}
return instance;
}
//封装doget方法
public void doGet(String url, final Class clazz, final NetCallBack netCallBack) {
// 2. 创建一个请求对象
Request request = new Request.Builder()
.get()
.url(url)
.build();
//创建call对象
Call call = client.newCall(request);
call.enqueue(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();
Gson gson = new Gson();
final Object o = gson.fromJson(string, clazz);
handler.post(new Runnable() {
@Override
public void run() {
netCallBack.LoadSuccess(o);
}
});
}
});
}
//封装dopost请求
public void doPost(String url, final Class clazz, String name, String pwd, final NetCallBack netCallBack) {
//新建okhttp对象
client = new OkHttpClient();
/**
* 通过体传值
*/
FormBody build = new FormBody.Builder()
.add("phone", name)
.add("pwd", pwd)
.build();
Request request = new Request.Builder()
.url(url)
.post(build)
.build();
Call call = client.newCall(request);
call.enqueue(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();
Gson gson = new Gson();
final Object o = gson.fromJson(string, clazz);
handler.post(new Runnable() {
@Override
public void run() {
netCallBack.LoadSuccess(o);
}
});
}
});
}
public interface NetCallBack {
void LoadSuccess(Object obj);
void LoadFail();
}
}
//适配器
package com.bawie.zhoukaomoni.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bawie.zhoukaomoni.R;
import com.bawie.zhoukaomoni.bean.ShopBean;
import com.bumptech.glide.Glide;
/**
-
@Author:asus
-
@E-mail: 945574298@163.com
-
@Date:2019/3/16 15:22
-
@Description:描述信息
*/
public class ShopAdapter extends RecyclerView.Adapter<ShopAdapter.ViewHolder> {
Context context;
ShopBean shopBean;public ShopAdapter(Context context, ShopBean shopBean){
this.context = context;
this.shopBean = shopBean;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.shop_layout, parent, false);return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Glide.with(context).load(shopBean.getResult().getMlss().getCommodityList().get(position).getMasterPic()).into(holder.imageView);
holder.textView.setText(shopBean.getResult().getMlss().getCommodityList().get(position).getCommodityName());}
@Override
public int getItemCount() {
return shopBean.getResult().getMlss().getCommodityList().size();
}public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView imageView;
private TextView textView;
public ViewHolder(View view) {
super(view);
imageView = view.findViewById(R.id.image);
textView = view.findViewById(R.id.textview);}
}
}
//mainactivity
package com.bawie.zhoukaomoni;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.bawie.zhoukaomoni.adapter.ShopAdapter;
import com.bawie.zhoukaomoni.bean.ShopBean;
import com.bawie.zhoukaomoni.mvp.presenter.IpresenterImpl;
import com.bawie.zhoukaomoni.mvp.view.Iview;
public class MainActivity extends AppCompatActivity implements Iview {
public static final String TAG=“MainActivity”;
private RecyclerView recyclerView;
private IpresenterImpl ipresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ipresenter = new IpresenterImpl();
ipresenter.attchView(this);
ipresenter.getPreData();
initview();
}
private void initview() {
recyclerView = findViewById(R.id.recycle);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public void getView(Object data) {
if(data!=null){
ShopBean shopBean= (ShopBean) data;
ShopAdapter shopAdapter = new ShopAdapter(MainActivity.this, shopBean);
recyclerView.setAdapter(shopAdapter);
}
}
@Override
protected void onResume() {
super.onResume();
}
}