MVP

Activity

package com.example.yougou.activity;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import com.example.yougou.R;
import com.example.yougou.adapter.HomeAdapter;
import com.example.yougou.bean.HomeBean;
import com.example.yougou.presenter.HomePresent;
import com.example.yougou.view.HomeView;

public class HomeActivity extends BaseActivity implements HomeView {

    private RecyclerView ho_recycl;
    private HomePresent homePresent;
    private HomeAdapter homeAdapter;

    @Override
    public int onId() {
        return R.layout.activity_home;
    }

    @Override
    public void onView() {

        ho_recycl = findViewById(R.id.ho_recycl);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        ho_recycl.setLayoutManager(linearLayoutManager);

        homePresent = new HomePresent(this);

    }

    @Override
    public void onData() {
        homePresent.HomeParameter();
    }

    @Override
    public void ViewData(HomeBean homeBean) {
        if (homeBean == null) {
            return;
        }
        homeAdapter = new HomeAdapter(homeBean, this);
        ho_recycl.setAdapter(homeAdapter);
        homeAdapter.setOnItemClickListener(new HomeAdapter.OnItemClickListener() {
            @Override
            public void OnItemClick(View view, int id) {
                Toast.makeText(HomeActivity.this, id + "", Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        homePresent.deaachView();
    }
}

Presenter

package com.example.yougou.presenter;

import com.example.yougou.bean.HomeBean;
import com.example.yougou.model.HomeModel;
import com.example.yougou.view.HomeView;

import java.lang.ref.WeakReference;


public class HomePresent<T> {

    private String url = "http://172.17.8.100/small/commodity/v1/commodityList";
    private final HomeModel homeModel;
    private final HomeView homeView;


    private WeakReference<T> weakReference;

    public void attachView(T view) {
        weakReference = new WeakReference<>(view);
    }

    public void deaachView() {
        if (weakReference.get() != null) {
            weakReference.clear();
            weakReference = null;
        }
    }

    public HomePresent(HomeView view) {
        homeModel = new HomeModel();
        homeView = view;
    }

    public void HomeParameter() {
        homeModel.PrenterParameter(url);
        homeModel.getOnData(new HomeModel.OnData() {
            @Override
            public void Datas(HomeBean data) {
                homeView.ViewData(data);
            }
        });
    }
}

Model

package com.example.yougou.model;

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

import com.example.yougou.bean.HomeBean;
import com.example.yougou.utils.OkHttpUtils;
import com.google.gson.Gson;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class HomeModel {
    public interface OnData {
        void Datas(HomeBean data);
    }

    public OnData onData;

    public void getOnData(OnData onData) {
        this.onData = onData;
    }

    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 0:
                    String hoJson = (String) msg.obj;
                    Gson gson = new Gson();
                    HomeBean homeBean = gson.fromJson(hoJson, HomeBean.class);
                    onData.Datas(homeBean);
                    break;
            }
        }
    };

    public void PrenterParameter(String url) {
        OkHttpUtils.getokHttpUtils().doGet(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String hoJson = response.body().string();
                Message message = new Message();
                message.obj = hoJson;
                message.what = 0;
                handler.sendMessage(message);
                Log.i("xxx", hoJson);
            }
        });
    }
}

View

package com.example.yougou.view;

import com.example.yougou.bean.HomeBean;


public interface HomeView {

    void ViewData(HomeBean homeBean);

}

Utils

package com.example.yougou.utils;

import android.util.Log;

import java.util.Map;

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


public class OkHttpUtils {

    private static OkHttpUtils okHttpUtils;

    private OkHttpUtils() {

    }

    public static OkHttpUtils getokHttpUtils() {
        if (okHttpUtils == null) {
            synchronized (OkHttpUtils.class) {
                if (okHttpUtils == null) {
                    okHttpUtils = new OkHttpUtils();
                }
            }
        }
        return okHttpUtils;
    }

    public void doPost(Map<String, String> map, String url, Callback callback) {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
                Log.i("xxx", message);
            }
        });

        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();

        FormBody.Builder builder = new FormBody.Builder();
        for (String key : map.keySet()) {
            builder.add(key, map.get(key));
        }

        Request request = new Request.Builder()
                .url(url)
                .post(builder.build())
                .build();

        Call call = okHttpClient.newCall(request);

        call.enqueue(callback);
    }

    public void doGet(String url, Callback callback) {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
                Log.i("xxx", message);
            }
        });

        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();

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

        Call call = okHttpClient.newCall(request);

        call.enqueue(callback);
    }
}

package com.example.yougou.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class PhoneUtils {

    /**
     * 判断是否是手机号
     *
     * @param mobile
     * @return
     */
    public static boolean isMobile(String mobile) {
        // "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
        String regex = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(mobile);
        return m.matches();
    }

}

Adapter

package com.example.yougou.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 com.bumptech.glide.Glide;
import com.example.yougou.R;
import com.example.yougou.bean.HomeBean;


public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private HomeBean homeBean;
    private Context context;
    private final int TYPE0 = 0;
    private final int TYPE1 = 1;

    public HomeAdapter(HomeBean homeBean, Context context) {
        this.homeBean = homeBean;
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        if (i == TYPE0) {
            View view = LayoutInflater.from(context).inflate(R.layout.item0, null, false);
            HomeHoler1 homeHoler1 = new HomeHoler1(view);
            return homeHoler1;
        } else {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item1, null, false);
            HomeHoler2 homeHoler2 = new HomeHoler2(view);
            return homeHoler2;
        }
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
        HomeBean.ResultBean.PzshBean.CommodityListBeanX commodityListBeanX = homeBean.getResult().getPzsh().get(0).getCommodityList().get(i);
        final int commodityId = commodityListBeanX.getCommodityId();
        if (viewHolder instanceof HomeHoler1) {
            final HomeHoler1 homeHoler1 = (HomeHoler1) viewHolder;
            homeHoler1.it0_tv.setText(commodityListBeanX.getCommodityName());
            Glide.with(context).load(commodityListBeanX.getMasterPic()).into(homeHoler1.it0_iv);

            homeHoler1.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onItemClickListener.OnItemClick(homeHoler1.itemView, commodityId);
                }
            });

        } else if (viewHolder instanceof HomeHoler2) {
            final HomeHoler2 homeHoler2 = (HomeHoler2) viewHolder;
            homeHoler2.it1_tv.setText(commodityListBeanX.getCommodityName());
            Glide.with(context).load(commodityListBeanX.getMasterPic()).into(homeHoler2.it1_iv);

            homeHoler2.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onItemClickListener.OnItemClick(homeHoler2.itemView, commodityId);
                }
            });
        }
    }

    @Override
    public int getItemViewType(int position) {
        if (position % 2 == 0) {
            return TYPE0;
        } else {
            return TYPE1;
        }
    }

    @Override
    public int getItemCount() {
        return homeBean.getResult().getPzsh().get(0).getCommodityList().size();
    }


    //第一种布局
    public class HomeHoler1 extends RecyclerView.ViewHolder {

        private final ImageView it0_iv;
        private final TextView it0_tv;

        public HomeHoler1(@NonNull View itemView) {
            super(itemView);
            it0_iv = itemView.findViewById(R.id.it0_iv);
            it0_tv = itemView.findViewById(R.id.it0_tv);
        }
    }

    public class HomeHoler2 extends RecyclerView.ViewHolder {

        private final ImageView it1_iv;
        private final TextView it1_tv;

        public HomeHoler2(@NonNull View itemView) {
            super(itemView);
            it1_iv = itemView.findViewById(R.id.it1_iv);
            it1_tv = itemView.findViewById(R.id.it1_tv);
        }
    }


    public interface OnItemClickListener {
        void OnItemClick(View view, int id);
    }

    public interface OnItemLongClickListener {
        void OnItemLongClick(View view, int id);
    }

    public OnItemClickListener onItemClickListener;
    public OnItemLongClickListener onItemLongClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) {
        this.onItemLongClickListener = onItemLongClickListener;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值