网络权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
依赖:
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.xhb:xbanner:1.2.2'
implementation 'com.mcxiaoke.volley:library:1.0.19'
清单注册:
android:name=".movelly.MappVolley"
布局:activity_main.xml/activity_main2.xml/banner_layout.xml/mlss_layout.xml/mlsshow.xml/plsshow.xml/pzsh_layout.xml/rlsshow.xml/rxxp_layout.xml
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/main_recy"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
activity_main2:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ShowActivity">
</android.support.constraint.ConstraintLayout>
banner_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.stx.xhb.xbanner.XBanner
android:layout_width="match_parent"
android:id="@+id/banner_banner"
android:layout_height="200dp">
</com.stx.xhb.xbanner.XBanner>
</LinearLayout>
mlss_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/mlss_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:gravity="center" />
<android.support.v7.widget.RecyclerView
android:id="@+id/mlss_recy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</LinearLayout>
mlsshow.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/mshow_image"
android:layout_width="500dp"
android:layout_height="200dp" />
<TextView
android:id="@+id/mshow_text"
android:layout_width="200dp"
android:layout_marginLeft="150dp"
android:layout_height="wrap_content" />
</LinearLayout>
plsshow.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/pshow_image"
android:layout_width="200dp"
android:layout_height="200dp" />
<TextView
android:id="@+id/pshow_text"
android:layout_width="200dp"
android:layout_height="wrap_content" />
</LinearLayout>
pzsh_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/pzsh_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:gravity="center" />
<android.support.v7.widget.RecyclerView
android:id="@+id/pzsh_recy"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</LinearLayout>
rlsshow.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/rshow_image"
android:layout_width="200dp"
android:layout_height="200dp" />
<TextView
android:id="@+id/rshow_text"
android:layout_width="200dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content" />
</LinearLayout>
rxxp_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/rxxp_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:gravity="center" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rxxp_recy"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
</LinearLayout>
工具类:
MovellyOkHttp
package com.example.duotiaomu.movelly;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import javax.security.auth.callback.Callback;
public class MovellyOkHttp {
private static MovellyOkHttp movellyOkHttp;
public static MovellyOkHttp getInstance() {
if (movellyOkHttp == null) {
synchronized (MovellyOkHttp.class) {
if (movellyOkHttp == null) {
movellyOkHttp = new MovellyOkHttp();
}
}
}
return movellyOkHttp;
}
public void GetMovelly(String url, final CallBack callBack) {
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
callBack.callcheng(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callBack.callshi(error);
}
});
stringRequest.setTag("GtetOk");
MappVolley.VolleyMapp().add(stringRequest);
}
public interface CallBack {
void callcheng(String che);
void callshi(VolleyError error);
}
}
MappVolley:
package com.example.duotiaomu.movelly;
import android.app.Application;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class MappVolley extends Application {
private static RequestQueue queue;
@Override
public void onCreate() {
super.onCreate();
queue = Volley.newRequestQueue(getApplicationContext());
}
public static RequestQueue VolleyMapp() {
return queue;
}
}
MVP:
IModel:
package com.example.duotiaomu.mvp.model;
public interface IModel {
void modshow(String url, CallBack callBack);
void modbanner(String jis,CallBack callBack);
interface CallBack {
void mocheng(String ksf);
void moshi();
}
}
Model:
package com.example.duotiaomu.mvp.model;
import com.android.volley.VolleyError;
import com.example.duotiaomu.movelly.MovellyOkHttp;
public class Model implements IModel {
@Override
public void modshow(String url, final CallBack callBack) {
MovellyOkHttp.getInstance().GetMovelly(url, new MovellyOkHttp.CallBack() {
@Override
public void callcheng(String che) {
callBack.mocheng(che);
}
@Override
public void callshi(VolleyError error) {
}
});
}
@Override
public void modbanner(String jis, final CallBack callBack) {
MovellyOkHttp.getInstance().GetMovelly(jis, new MovellyOkHttp.CallBack() {
@Override
public void callcheng(String che) {
callBack.mocheng(che);
}
@Override
public void callshi(VolleyError error) {
}
});
}
}
IPresenter:
package com.example.duotiaomu.mvp.presenter;
import com.example.duotiaomu.mvp.view.IView;
public interface IPresenter {
void ipcheng(String url);
void ipbanner(String jdf);
void ipbang(IView iView);
void ipshi(IView iView);
}
Presenter:
package com.example.duotiaomu.mvp.presenter;
import com.example.duotiaomu.mvp.model.IModel;
import com.example.duotiaomu.mvp.model.Model;
import com.example.duotiaomu.mvp.view.IView;
import java.lang.ref.SoftReference;
public class Presenter implements IPresenter {
IView iView;
IModel iModel;
SoftReference<IModel> softReference;
@Override
public void ipcheng(String url) {
iModel.modshow(url, new IModel.CallBack() {
@Override
public void mocheng(String ksf) {
iView.viewshow(ksf);
}
@Override
public void moshi() {
}
});
}
@Override
public void ipbanner(String jdf) {
iModel.modbanner(jdf, new IModel.CallBack() {
@Override
public void mocheng(String ksf) {
iView.viewbanner(ksf);
}
@Override
public void moshi() {
}
});
}
@Override
public void ipbang(IView iView) {
this.iView = iView;
iModel = new Model();
softReference = new SoftReference<>(iModel);
}
@Override
public void ipshi(IView iView) {
}
}
IView:
package com.example.duotiaomu.mvp.view;
public interface IView {
void viewshow(String kjs);
void viewbanner(String sdf);
}
MainActivity:
package com.example.duotiaomu;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import com.example.duotiaomu.bannerbean.JsonbannerBean;
import com.example.duotiaomu.bean.JsonBean;
import com.example.duotiaomu.bean.ResultBean;
import com.example.duotiaomu.mvp.presenter.Presenter;
import com.example.duotiaomu.mvp.view.IView;
import com.google.gson.Gson;
public class MainActivity extends AppCompatActivity implements IView {
private RecyclerView recy;
private String url = "http://172.17.8.100/small/commodity/v1/commodityList";
private String bann = "http://172.17.8.100/small/commodity/v1/bannerShow";
private JsonbannerBean jsonsBean;
private ResultBean result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recy = findViewById(R.id.main_recy);
Presenter presenter = new Presenter();
presenter.ipbang(this);
presenter.ipcheng(url);
presenter.ipbanner(bann);
}
@Override
public void viewshow(String kjs) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(kjs, JsonBean.class);
result = jsonBean.getResult();
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
recy.setLayoutManager(linearLayoutManager);
HomeAdapter homeAdapter = new HomeAdapter(MainActivity.this, result, jsonsBean);
recy.setAdapter(homeAdapter);
}
@Override
public void viewbanner(String sdf) {
Log.d("sss", sdf);
Gson gson = new Gson();
jsonsBean = gson.fromJson(sdf, JsonbannerBean.class);
HomeAdapter homeAdapter = new HomeAdapter(MainActivity.this, result, jsonsBean);
recy.setAdapter(homeAdapter);
}
}
适配器:MlssAdapter/PzshAdapter/RxxpAdapter
MlssAdapter:
package com.example.duotiaomu.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.duotiaomu.R;
import com.example.duotiaomu.bean.CommidBean;
import java.util.ArrayList;
public class MlssAdapter extends RecyclerView.Adapter<MlssAdapter.ViewHolder> {
Context context;
ArrayList<CommidBean> commodityList;
public MlssAdapter(Context context, ArrayList<CommidBean> commodityList) {
this.context = context;
this.commodityList = commodityList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.mlsshow, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.text.setText(commodityList.get(i).getCommodityName());
Glide.with(context).load(commodityList.get(i).getMasterPic()).into(viewHolder.image);
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setOnclick.getonclick();
}
});
}
@Override
public int getItemCount() {
return commodityList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final ImageView image;
private final TextView text;
public ViewHolder(@NonNull View itemView) {
super(itemView);
image = itemView.findViewById(R.id.mshow_image);
text = itemView.findViewById(R.id.mshow_text);
}
}
SetOnclick setOnclick;
public void getlicker(SetOnclick setOnclick) {
this.setOnclick = setOnclick;
}
public interface SetOnclick {
void getonclick();
}
}
PzshAdapter:
package com.example.duotiaomu.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.duotiaomu.R;
import com.example.duotiaomu.bean.CommidBean;
import java.util.ArrayList;
public class PzshAdapter extends RecyclerView.Adapter<PzshAdapter.ViewHolder> {
Context context;
ArrayList<CommidBean> commodityList;
public PzshAdapter(Context context, ArrayList<CommidBean> commodityList) {
this.context = context;
this.commodityList = commodityList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.plsshow, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.text.setText(commodityList.get(i).getCommodityName());
Glide.with(context).load(commodityList.get(i).getMasterPic()).into(viewHolder.image);
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setOnclick.getonclick();
}
});
}
@Override
public int getItemCount() {
return commodityList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final ImageView image;
private final TextView text;
public ViewHolder(@NonNull View itemView) {
super(itemView);
image = itemView.findViewById(R.id.pshow_image);
text = itemView.findViewById(R.id.pshow_text);
}
}
MlssAdapter.SetOnclick setOnclick;
public void getlicker(MlssAdapter.SetOnclick setOnclick) {
this.setOnclick = setOnclick;
}
public interface SetOnclick {
void getonclick();
}
}
RxxpAdapter:
package com.example.duotiaomu.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.duotiaomu.R;
import com.example.duotiaomu.bean.CommidBean;
import java.util.ArrayList;
public class RxxpAdapter extends RecyclerView.Adapter<RxxpAdapter.ViewHolder> {
Context context;
ArrayList<CommidBean> commodityList;
public RxxpAdapter(Context context, ArrayList<CommidBean> commodityList) {
this.context = context;
this.commodityList = commodityList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.rlsshow, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
viewHolder.text.setText(commodityList.get(i).getCommodityName());
Glide.with(context).load(commodityList.get(i).getMasterPic()).into(viewHolder.image);
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setOnclick.getonclick();
}
});
}
@Override
public int getItemCount() {
return commodityList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private final ImageView image;
private final TextView text;
public ViewHolder(@NonNull View itemView) {
super(itemView);
image = itemView.findViewById(R.id.rshow_image);
text = itemView.findViewById(R.id.rshow_text);
}
}
MlssAdapter.SetOnclick setOnclick;
public void getlicker(MlssAdapter.SetOnclick setOnclick) {
this.setOnclick = setOnclick;
}
public interface SetOnclick {
void getonclick();
}
}
HomeAdapter:
package com.example.duotiaomu;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
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.duotiaomu.adapter.MlssAdapter;
import com.example.duotiaomu.adapter.PzshAdapter;
import com.example.duotiaomu.adapter.RxxpAdapter;
import com.example.duotiaomu.bannerbean.JsonbannerBean;
import com.example.duotiaomu.bean.CommidBean;
import com.example.duotiaomu.bean.ResultBean;
import com.stx.xhb.xbanner.XBanner;
import java.util.ArrayList;
public class HomeAdapter extends RecyclerView.Adapter {
Context context;
ResultBean resultBean;
JsonbannerBean jsonbannerBean;
private int bannertype = 0;
private int Mlsstype = 1;
private int PzshType = 2;
private int RxxpType = 3;
public HomeAdapter(Context context, ResultBean resultBean, JsonbannerBean jsonbannerBean) {
this.context = context;
this.resultBean = resultBean;
this.jsonbannerBean = jsonbannerBean;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
if (i == bannertype) {
View view = LayoutInflater.from(context).inflate(R.layout.banner_layout, viewGroup, false);
return new BannerHolder(view);
} else if (i == Mlsstype) {
View view = LayoutInflater.from(context).inflate(R.layout.mlss_layout, viewGroup, false);
return new MlssViewHolder(view);
} else if (i == PzshType) {
View view = LayoutInflater.from(context).inflate(R.layout.pzsh_layout, viewGroup, false);
return new PzshHolder(view);
} else {
View view = LayoutInflater.from(context).inflate(R.layout.rxxp_layout, viewGroup, false);
return new RxxpHolder(view);
}
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
if (i == bannertype) {
BannerHolder bannerHolder = (BannerHolder) viewHolder;
bannerHolder.banner.setData(jsonbannerBean.getResult(), null);
bannerHolder.banner.setmAdapter(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, View view, int position) {
Glide.with(context).load(jsonbannerBean.getResult().get(position).getImageUrl()).into((ImageView) view);
}
});
bannerHolder.banner.setOnItemClickListener(new XBanner.OnItemClickListener() {
@Override
public void onItemClick(XBanner banner, int position) {
Intent intent = new Intent(context, ShowActivity.class);
Log.d("banner","大大大第三方对方");
context.startActivity(intent);
}
});
} else if (i == Mlsstype) {
MlssViewHolder mlssViewHolder = (MlssViewHolder) viewHolder;
mlssViewHolder.text.setText(resultBean.getMlss().getName());
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
mlssViewHolder.recy.setLayoutManager(linearLayoutManager);
ArrayList<CommidBean> commodityList = resultBean.getMlss().getCommodityList();
MlssAdapter mlssAdapter = new MlssAdapter(context, commodityList);
mlssViewHolder.recy.setAdapter(mlssAdapter);
mlssAdapter.getlicker(new MlssAdapter.SetOnclick() {
@Override
public void getonclick() {
Intent intent = new Intent(context, ShowActivity.class);
context.startActivity(intent);
}
});
} else if (i == PzshType) {
PzshHolder pzshHolder = (PzshHolder) viewHolder;
pzshHolder.text.setText(resultBean.getPzsh().getName());
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
pzshHolder.recy.setLayoutManager(linearLayoutManager);
ArrayList<CommidBean> commodityList = resultBean.getPzsh().getCommodityList();
PzshAdapter pzshAdapter = new PzshAdapter(context, commodityList);
pzshHolder.recy.setAdapter(pzshAdapter);
pzshAdapter.getlicker(new MlssAdapter.SetOnclick() {
@Override
public void getonclick() {
Intent intent = new Intent(context, ShowActivity.class);
context.startActivity(intent);
}
});
} else {
RxxpHolder rxxpHolder = (RxxpHolder) viewHolder;
rxxpHolder.text.setText(resultBean.getRxxp().getName());
GridLayoutManager linearLayoutManager = new GridLayoutManager(context, 2);
rxxpHolder.recy.setLayoutManager(linearLayoutManager);
ArrayList<CommidBean> commodityList = resultBean.getRxxp().getCommodityList();
RxxpAdapter rxxpAdapter = new RxxpAdapter(context, commodityList);
rxxpHolder.recy.setAdapter(rxxpAdapter);
rxxpAdapter.getlicker(new MlssAdapter.SetOnclick() {
@Override
public void getonclick() {
Intent intent = new Intent(context, ShowActivity.class);
context.startActivity(intent);
}
});
}
}
@Override
public int getItemCount() {
return 4;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return bannertype;
} else if (position == 1) {
return Mlsstype;
} else if (position == 2) {
return PzshType;
} else {
return RxxpType;
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(@NonNull View itemView) {
super(itemView);
}
}
private class BannerHolder extends ViewHolder {
private final XBanner banner;
public BannerHolder(View view) {
super(view);
banner = view.findViewById(R.id.banner_banner);
}
}
private class MlssViewHolder extends ViewHolder {
private final TextView text;
private final RecyclerView recy;
public MlssViewHolder(View view) {
super(view);
recy = view.findViewById(R.id.mlss_recy);
text = view.findViewById(R.id.mlss_text);
}
}
private class PzshHolder extends ViewHolder {
private final TextView text;
private final RecyclerView recy;
public PzshHolder(View view) {
super(view);
recy = view.findViewById(R.id.pzsh_recy);
text = view.findViewById(R.id.pzsh_text);
}
}
private class RxxpHolder extends ViewHolder {
private final TextView text;
private final RecyclerView recy;
public RxxpHolder(View view) {
super(view);
recy = view.findViewById(R.id.rxxp_recy);
text = view.findViewById(R.id.rxxp_text);
}
}
}