MVP框架(樊氏MVP框架)

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());

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44405056/article/details/88627008