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;
}
}