代码
package com.bawei.zailianzhoukao2.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bawei.zailianzhoukao2.R;
import com.bawei.zailianzhoukao2.entiey.HomeEntity;
import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import java.util.List;
public class MlssAdapter extends RecyclerView.Adapter<MlssAdapter.MyViewHorlder> {
private Context context;
private List<HomeEntity.ResultBean.MlssBean.CommodityListBeanXX> list;
public MlssAdapter(Context context, List<HomeEntity.ResultBean.MlssBean.CommodityListBeanXX> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyViewHorlder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = View.inflate(context, R.layout.mlss_item_layout, null);
MyViewHorlder myViewHorlder = new MyViewHorlder(inflate);
return myViewHorlder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHorlder holder, int position) {
Glide.with(context)
.load(list.get(position).getMasterPic())
.placeholder(R.mipmap.ic_launcher)
.error(R.mipmap.ic_launcher)
.priority(Priority.HIGH)
.circleCrop()
.into(holder.iv);
holder.name.setText(list.get(position).getCommodityName());
holder.price.setText(list.get(position).getPrice()+"");
}
@Override
public int getItemCount() {
return list.size();
}
class MyViewHorlder extends RecyclerView.ViewHolder {
private TextView name;
private TextView price;
private ImageView iv;
public MyViewHorlder(@NonNull View itemView) {
super(itemView);
iv = itemView.findViewById(R.id.iv);
name = itemView.findViewById(R.id.name);
price = itemView.findViewById(R.id.price);
}
}
}
package com.bawei.zailianzhoukao2.app;
import android.app.Application;
import android.content.Context;
public class App extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context=getApplicationContext();
}
public static Context getContext() {
return context;
}
}
package com.bawei.zailianzhoukao2.base;
import java.lang.ref.WeakReference;
public abstract class BasePresenter<M extends IBaseModel,V extends IBaseView>{
public M model;
public WeakReference<V> weakReference;
public BasePresenter(){
model=initModel();
}
public void attchView(V v){
weakReference=new WeakReference<>(v);
}
protected abstract M initModel();
public void detach(){
if (weakReference!=null){
weakReference.clear();
weakReference=null;
}
}
public V getView(){
return weakReference.get();
}
}
package com.bawei.zailianzhoukao2.base;
public interface IBaseModel {
}
package com.bawei.zailianzhoukao2.base;
public interface IBaseView {
void showLoading();
void hideLoading();
}
package com.bawei.zailianzhoukao2.contract;
import com.bawei.zailianzhoukao2.base.IBaseModel;
import com.bawei.zailianzhoukao2.base.IBaseView;
public interface IHomeContract {
interface IModel extends IBaseModel {
void getHome(ModelCallback modelCallback);
void getBanner(ModelCallback modelCallback);
interface ModelCallback{
void success(Object data);
void error(Throwable throwable);
}
}
interface IView extends IBaseView {
void success(Object data);
void error(Throwable throwable);
}
interface IPresenter{
void getHome();
void getBanner();
}
}
package com.bawei.zailianzhoukao2.entiey;
import com.bawei.zailianzhoukao2.api.Api;
import com.bawei.zailianzhoukao2.contract.IHomeContract;
import com.bawei.zailianzhoukao2.utils.VolleyUtils;
import com.google.gson.Gson;
public class HomeModel implements IHomeContract.IModel {
@Override
public void getHome(final ModelCallback modelCallback) {
VolleyUtils.getInstance().doGet(Api.HOME_URL, new VolleyUtils.VelloyCallBack() {
@Override
public void success(String response) {
// if (modelCallback != null) {
HomeEntity homeEntity = new Gson().fromJson(response, HomeEntity.class);
modelCallback.success(homeEntity);
// }
}
@Override
public void error(Throwable throwable) {
if (modelCallback != null) {
modelCallback.error(throwable);
}
}
});
}
@Override
public void getBanner(final ModelCallback modelCallback) {
VolleyUtils.getInstance().doGet(Api.BANNER_URL, new VolleyUtils.VelloyCallBack() {
@Override
public void success(String response) {
BannerEntity bannerEntity = new Gson().fromJson(response, BannerEntity.class);
modelCallback.success(bannerEntity);
}
@Override
public void error(Throwable throwable) {
modelCallback.error(throwable);
}
});
}
}
package com.bawei.zailianzhoukao2.presenter;
import com.bawei.zailianzhoukao2.base.BasePresenter;
import com.bawei.zailianzhoukao2.contract.IHomeContract;
import com.bawei.zailianzhoukao2.entiey.HomeModel;
public class HomePresenter extends BasePresenter<HomeModel, IHomeContract.IView> implements IHomeContract.IPresenter {
@Override
protected HomeModel initModel() {
return new HomeModel();
}
@Override
public void getHome() {
model.getHome(new IHomeContract.IModel.ModelCallback() {
@Override
public void success(Object data) {
getView().success(data);
}
@Override
public void error(Throwable throwable) {
getView().error(throwable);
}
});
}
@Override
public void getBanner() {
model.getBanner(new IHomeContract.IModel.ModelCallback() {
@Override
public void success(Object data) {
getView().success(data);
}
@Override
public void error(Throwable throwable) {
getView().error(throwable);
}
});
}
}
package com.bawei.zailianzhoukao2.utils;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.bawei.zailianzhoukao2.app.App;
public class VolleyUtils {
private RequestQueue requestQueue;
private static VolleyUtils volleyUtils;
public static VolleyUtils getInstance() {
if (volleyUtils==null){
synchronized ((VolleyUtils.class)){
if (volleyUtils==null){
volleyUtils=new VolleyUtils();
}
}
}
return volleyUtils;
}
private VolleyUtils(){
requestQueue= Volley.newRequestQueue(App.getContext());
}
public void doGet(String url, final VelloyCallBack velloyCallBack){
StringRequest stringRequest = new StringRequest(StringRequest.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (velloyCallBack!=null){
velloyCallBack.success(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (velloyCallBack!=null){
velloyCallBack.error(error);
}
}
});
requestQueue.add(stringRequest);
}
public interface VelloyCallBack{
void success(String response);
void error(Throwable throwable);
}
}
package com.bawei.zailianzhoukao2.utils;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.bawei.zailianzhoukao2.R;
import com.bawei.zailianzhoukao2.adapter.MlssAdapter;
import com.bawei.zailianzhoukao2.adapter.PzshAdapter;
import com.bawei.zailianzhoukao2.adapter.RxxpAdapter;
import com.bawei.zailianzhoukao2.base.BaseActivity;
import com.bawei.zailianzhoukao2.contract.IHomeContract;
import com.bawei.zailianzhoukao2.entiey.BannerEntity;
import com.bawei.zailianzhoukao2.entiey.HomeEntity;
import com.bawei.zailianzhoukao2.presenter.HomePresenter;
import com.bumptech.glide.Glide;
import com.stx.xhb.androidx.XBanner;
import java.util.List;
public class MainActivity extends BaseActivity<HomePresenter> implements IHomeContract.IView {
private XBanner xb;
private RecyclerView rxxp;
private RecyclerView pzsh;
private RecyclerView mlss;
@Override
protected HomePresenter initPresenter() {
return new HomePresenter();
}
@Override
protected void initData() {
presenter.getHome();
presenter.getBanner();
}
@Override
protected void initView() {
xb = findViewById(R.id.xb);
rxxp = findViewById(R.id.rxxp);
pzsh = findViewById(R.id.pzsh);
mlss = findViewById(R.id.mlss);
rxxp.setLayoutManager(new LinearLayoutManager(this,RecyclerView.HORIZONTAL,false));
mlss.setLayoutManager(new LinearLayoutManager(this));
pzsh.setLayoutManager(new GridLayoutManager(this,2));
}
@Override
protected int bindLayouyId() {
return R.layout.activity_main;
}
@Override
public void success(Object data) {
if (data!=null){
if (data instanceof HomeEntity){
Toast.makeText(this,"456" , Toast.LENGTH_SHORT).show();
RxxpAdapter rxxpAdapter = new RxxpAdapter(this, ((HomeEntity) data).getResult().getRxxp().getCommodityList());
rxxp.setAdapter(rxxpAdapter);
MlssAdapter mlssAdapter = new MlssAdapter(this, ((HomeEntity) data).getResult().getMlss().getCommodityList());
mlss.setAdapter(mlssAdapter);
PzshAdapter pzshAdapter = new PzshAdapter(this, ((HomeEntity) data).getResult().getPzsh().getCommodityList());
pzsh.setAdapter(pzshAdapter);
}else if (data instanceof BannerEntity){
final List<BannerEntity.Banner> result = ((BannerEntity) data).result;
xb.setBannerData(result);
xb.loadImage(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, Object model, View view, int position) {
Glide.with(MainActivity.this).load(result.get(position).imageUrl).into((ImageView) view);
}
});
}
}
}
@Override
public void error(Throwable throwable) {
Toast.makeText(this, "网络错误", Toast.LENGTH_SHORT).show();
}
@Override
public void showLoading() {
}
@Override
public void hideLoading() {
}
}