IModel
public interface IModel {
void getModel(ModelCallBack modelCallBack);
interface ModelCallBack{
void onSuccess(Object data);
void onFail(Exception e);
}
}
Model
public class Model 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() {
}
});
}
}
IPresenter
public interface IPresenter {
void getData();
void attachView(IView iView);
void Datchview();
}
Presenter
public class Presenter implements IPresenter{
private IModel model;
private SoftReference<IModel> iModelSoftReference;
MainActivity mainActivity;
@Override
public void getData() {
model.getModel(new IModel.ModelCallBack() {
@Override
public void onSuccess(Object data) {
mainActivity.getView(data);
}
@Override
public void onFail(Exception e) {
}
});
}
@Override
public void attachView(IView iView) {
this.mainActivity= (MainActivity) iView;
model=new Model();
iModelSoftReference=new SoftReference<IModel>(model);
}
@Override
public void Datchview() {
}
}
IView
public interface IView {
void getView(Object data);
}
主页面
package wangyaowei.bw.com.week1;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import wangyaowei.bw.com.week1.adapter.MyAdapter;
import wangyaowei.bw.com.week1.adapter.MyNewAdapter;
import wangyaowei.bw.com.week1.bean.ShopBean;
import wangyaowei.bw.com.week1.mvp.presenter.Presenter;
import wangyaowei.bw.com.week1.mvp.view.IView;
public class MainActivity extends AppCompatActivity implements IView {
private RecyclerView rlv;
private Presenter presenter;
private ShopBean shopBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rlv = findViewById(R.id.rlv);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
rlv.setLayoutManager(linearLayoutManager);
presenter = new Presenter();
presenter.attachView(this);
presenter.getData();
}
@Override
public void getView(Object data) {
if (data!=null){
shopBean = (ShopBean) data;
MyNewAdapter myNewAdapter = new MyNewAdapter(MainActivity.this, shopBean);
MyAdapter myAdapter = new MyAdapter(MainActivity.this, shopBean);
rlv.setAdapter(myNewAdapter);
myNewAdapter.setListener(new MyAdapter.RecyclerviewListener() {
@Override
public void onResult(int id) {
Intent intent = new Intent(MainActivity.this, XiangActivity.class);
intent.putExtra("id",id);
startActivity(intent);
}
});
}
}
}
适配器
package wangyaowei.bw.com.week1.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
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 android.widget.Toast;
import com.bumptech.glide.Glide;
import java.util.List;
import wangyaowei.bw.com.week1.R;
import wangyaowei.bw.com.week1.bean.ShopBean;
/*
*********************************
*时间:2019/3/17 19:46
**
*
*********************************
*/public class MyNewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
Context context;
ShopBean shopBean;
int type=0;
int type1=1;
public MyNewAdapter(Context context, ShopBean shopBean) {
this.context = context;
this.shopBean = shopBean;
}
@Override
public int getItemViewType(int position) {
if (position%2==0){
return type;
}else {
return type1;
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
int type3 = getItemViewType(i);
if (type3==type){
View view=LayoutInflater.from(context).inflate(R.layout.item_layout,null,false);
MyViewHoler myViewHoler = new MyViewHoler(view);
return myViewHoler;
}else {
View view=LayoutInflater.from(context).inflate(R.layout.item_layoutt,null,false);
MyViewHolder1 myViewHolder1 = new MyViewHolder1(view);
return myViewHolder1;
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
if (viewHolder instanceof MyViewHoler){
Glide.with(context).load(shopBean.getResult().getPzsh().getCommodityList().get(i).getMasterPic()).into(((MyViewHoler)viewHolder).img);
((MyViewHoler)viewHolder).text_name.setText(shopBean.getResult().getPzsh().getCommodityList().get(i).getCommodityName());
viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
delete(i);
return false;
}
});
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onResult(v.getId());
Toast.makeText(context, ""+1, Toast.LENGTH_SHORT).show();
}
});
}else if (viewHolder instanceof MyViewHolder1){
Glide.with(context).load(shopBean.getResult().getPzsh().getCommodityList().get(i).getMasterPic()).into(((MyViewHolder1)viewHolder).img1);
((MyViewHolder1)viewHolder).text_name1.setText(shopBean.getResult().getPzsh().getCommodityList().get(i).getCommodityName());
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onResult(v.getId());
Toast.makeText(context, ""+1, Toast.LENGTH_SHORT).show();
}
});
}
}
private void delete(int i) {
ShopBean.ResultBean.PzshBean pzsh = shopBean.getResult().getPzsh();
List<ShopBean.ResultBean.PzshBean.CommodityListBeanX> commodityList = pzsh.getCommodityList();
commodityList.remove(i);
Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show();
notifyDataSetChanged();
}
public interface RecyclerviewListener{
void onResult(int id);
}
private MyAdapter.RecyclerviewListener listener;
public void setListener(MyAdapter.RecyclerviewListener listener) {
this.listener = listener;
}
@Override
public int getItemCount() {
return shopBean.getResult().getPzsh().getCommodityList().size();
}
public class MyViewHoler extends RecyclerView.ViewHolder{
private final ImageView img;
private final TextView text_name;
public MyViewHoler(@NonNull View itemView) {
super(itemView);
img = itemView.findViewById(R.id.img);
text_name = itemView.findViewById(R.id.text_name);
}
}
public class MyViewHolder1 extends RecyclerView.ViewHolder{
private final TextView text_name1;
private final ImageView img1;
public MyViewHolder1(@NonNull View itemView) {
super(itemView);
text_name1 = itemView.findViewById(R.id.text_name1);
img1 = itemView.findViewById(R.id.img1);
}
}
}
网络请求框架
package wangyaowei.bw.com.week1.http;
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;
/*
*********************************
*作者:wangyaowei
*时间:2019/3/16 15:16
**
*
*********************************
*/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.i("--------","拦截前");
Response proceed = chain.proceed(request);
Log.i("--------","拦截后");
return proceed;
}
};
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 (instance==null){
instance=new OkHttp();
}
}
}
return instance;
}
public void doGet(String url, final Class clazz, final NetCallBack netCallBack){
//创建一个请求对象
Request request=new Request.Builder()
.get()
.url(url)
.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 void doPost(String url, final Class clazz, String name,String pwd, final NetCallBack netCallBack){
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();
}
}
详情页
public class XiangActivity extends AppCompatActivity {
private WebView web;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xiang);
web = findViewById(R.id.web);
Intent intent = getIntent();
String id = intent.getStringExtra("id");
web.loadUrl("http://a.vpimg3.com/upload/merchandise/pdcvis/2018/10/17/56/7403c318-24a5-4701-af07-47039f12f795.jpg");
web.getSettings().setJavaScriptEnabled(true);
web.setWebChromeClient(new WebChromeClient());
}
}