<1布局文件>
**mainactivity**
<?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"
android:orientation="horizontal"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyone"
android:layout_width="wrap_content"
android:layout_height="match_parent"
>
</android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/recytwo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
**item1**
<?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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/onetext"
android:text="天天"
android:padding="20dp"
/>
</LinearLayout>
**item2**
<?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/twotext"
android:text="商品分类"
android:layout_gravity="center"
android:padding="10dp"
android:layout_width="100dp"
android:layout_height="100dp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recythree"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
**item3**
<?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">
<ImageView
android:id="@+id/imagethree"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textthree"
android:text="你好"
android:padding="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
2.adapter
public class MyAdapter extends RecyclerView.Adapter {
private Context context;
private List<LeftUser.DataBean> list;
public MyAdapter(Context context, List<LeftUser.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item1, viewGroup, false);
FristViewHolder fristViewHolder = new FristViewHolder(view);
return fristViewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {
if (holder instanceof FristViewHolder) {
((FristViewHolder) holder).mTextView.setText(list.get(i).getName());
}
}
@Override
public int getItemCount() {
return list.size() == 0 ? 0 : list.size();
}
class FristViewHolder extends RecyclerView.ViewHolder {
private final TextView mTextView;
public FristViewHolder(@NonNull View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.onetext);
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mItemClick.onItem(getAdapterPosition());
}
});
}
}
public void setList(List<LeftUser.DataBean> list) {
this.list = list;
}
//定义接口
public interface ItemClick {
void onItem(int data);
}
private ItemClick mItemClick;
public void setmItemClick(ItemClick mItemClick) {
this.mItemClick = mItemClick;
}
}
public class MyTwoAdapter extends RecyclerView.Adapter {
private Context context;
private List<RightUser.DataBean> list;
public MyTwoAdapter(Context context, List<RightUser.DataBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item2, viewGroup, false);
SecondViewHolder secondViewHolder=new SecondViewHolder(view);
return secondViewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {
//填充布局
if(holder instanceof SecondViewHolder){
((SecondViewHolder) holder).mTextView2.setText(list.get(i).getName());
GridLayoutManager gridLayoutManager= new GridLayoutManager(context,3);
((SecondViewHolder) holder).mRecyclerView.setLayoutManager(gridLayoutManager);
MyThreeAdapter myThreeAdapter=new MyThreeAdapter(context,list.get(i).getList());
((SecondViewHolder) holder).mRecyclerView.setAdapter(myThreeAdapter);
}
}
@Override
public int getItemCount() {
return list.size()==0?0:list.size();
}
public void setList(List<RightUser.DataBean> list) {
this.list = list;
}
class SecondViewHolder extends RecyclerView.ViewHolder{
private final TextView mTextView2;
private final RecyclerView mRecyclerView;
public SecondViewHolder(@NonNull View itemView) {
super(itemView);
mTextView2 = itemView.findViewById(R.id.twotext);
mRecyclerView = itemView.findViewById(R.id.recythree);
}
}
}
public class MyThreeAdapter extends RecyclerView.Adapter {
private Context context;
private List<RightUser.DataBean.ListBean> list;
public MyThreeAdapter(Context context, List<RightUser.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item3, viewGroup, false);
ThreeViewHolder threeViewHolder=new ThreeViewHolder(view);
return threeViewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {
if(holder instanceof ThreeViewHolder){
((ThreeViewHolder) holder).mtextview.setText(list.get(i).getName());
Picasso.with(context).load(list.get(i).getIcon()).into(((ThreeViewHolder) holder).imageView);
}
}
@Override
public int getItemCount() {
return list.size()==0?0:list.size();
}
class ThreeViewHolder extends RecyclerView.ViewHolder{
private final TextView mtextview;
private final ImageView imageView;
public ThreeViewHolder(@NonNull View itemView) {
super(itemView);
mtextview = itemView.findViewById(R.id.textthree);
imageView = itemView.findViewById(R.id.imagethree);
}
}
}
3.bean类
public class LeftUser {
/**
* msg :
* code : 0
* data : [{"cid":1,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/shop.png","ishome":1,"name":"京东超市"},{"cid":2,"createtime":"2017-10-10T19:41:39","icon":"http://120.27.23.105/images/category/qqg.png","ishome":1,"name":"全球购"},{"cid":3,"createtime":"2017-10-10T19:45:11","icon":"http://120.27.23.105/images/category/phone.png","ishome":1,"name":"手机数码"},{"cid":5,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/man.png","ishome":1,"name":"男装"},{"cid":6,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girl.png","ishome":1,"name":"女装"},{"cid":7,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/manshoe.png","ishome":1,"name":"男鞋"},{"cid":8,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/girlshoe.png","ishome":1,"name":"女鞋"},{"cid":9,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/shirt.png","ishome":1,"name":"内衣配饰"},{"cid":10,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/bag.png","ishome":1,"name":"箱包手袋"},{"cid":11,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/beauty.png","ishome":1,"name":"美妆个护"},{"cid":12,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/jewel.png","ishome":1,"name":"钟表珠宝"},{"cid":13,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/luxury.png","ishome":1,"name":"奢侈品"},{"cid":14,"createtime":"2017-10-10T20:12:03","icon":"http://120.27.23.105/images/category/computer.png","ishome":1,"name":"电脑办公"},{"cid":15,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"家用电器"},{"cid":16,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"食品生鲜"},{"cid":17,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"酒水饮料"},{"cid":18,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"母婴童装"},{"cid":19,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"玩具乐器"},{"cid":20,"createtime":"2017-09-29T10:13:48","icon":"http://120.27.23.105/images/icon.png","ishome":0,"name":"医药保健"}]
*/
private String msg;
private String code;
private List<DataBean> data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* cid : 1
* createtime : 2017-10-10T19:41:39
* icon : http://120.27.23.105/images/category/shop.png
* ishome : 1
* name : 京东超市
*/
private int cid;
private String createtime;
private String icon;
private int ishome;
private String name;
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public int getIshome() {
return ishome;
}
public void setIshome(int ishome) {
this.ishome = ishome;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
public class RightUser {
/**
* msg : 获取子分类成功
* code : 0
* data : [{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"耳机/耳麦","pcid":10,"pscid":61},{"icon":"http://120.27.23.105/images/icon.png","name":"音箱/音响","pcid":10,"pscid":62},{"icon":"http://120.27.23.105/images/icon.png","name":"MP3/MP4","pcid":10,"pscid":63},{"icon":"http://120.27.23.105/images/icon.png","name":"便携/无线音箱","pcid":10,"pscid":64},{"icon":"http://120.27.23.105/images/icon.png","name":"麦克风","pcid":10,"pscid":65}],"name":"影音娱乐","pcid":"10"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"游戏手机","pcid":11,"pscid":66},{"icon":"http://120.27.23.105/images/icon.png","name":"拍照手机","pcid":11,"pscid":67},{"icon":"http://120.27.23.105/images/icon.png","name":"大屏手机","pcid":11,"pscid":68},{"icon":"http://120.27.23.105/images/icon.png","name":"老人机","pcid":11,"pscid":69},{"icon":"http://120.27.23.105/images/icon.png","name":"对讲机","pcid":11,"pscid":70}],"name":"手机通讯","pcid":"11"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"蓝牙耳机","pcid":12,"pscid":71},{"icon":"http://120.27.23.105/images/icon.png","name":"移动电源","pcid":12,"pscid":72},{"icon":"http://120.27.23.105/images/icon.png","name":"苹果周边","pcid":12,"pscid":73},{"icon":"http://120.27.23.105/images/icon.png","name":"手机耳机","pcid":12,"pscid":74},{"icon":"http://120.27.23.105/images/icon.png","name":"充电器","pcid":12,"pscid":75},{"icon":"http://120.27.23.105/images/icon.png","name":"数据线","pcid":12,"pscid":76},{"icon":"http://120.27.23.105/images/icon.png","name":"手机电池","pcid":12,"pscid":77},{"icon":"http://120.27.23.105/images/icon.png","name":"保护套","pcid":12,"pscid":78}],"name":"手机配件","pcid":"12"},{"cid":"3","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"单反相机","pcid":13,"pscid":79},{"icon":"http://120.27.23.105/images/icon.png","name":"单电/微单相机","pcid":13,"pscid":80},{"icon":"http://120.27.23.105/images/icon.png","name":"拍立得","pcid":13,"pscid":81},{"icon":"http://120.27.23.105/images/icon.png","name":"数码相机","pcid":13,"pscid":82},{"icon":"http://120.27.23.105/images/icon.png","name":"摄像机","pcid":13,"pscid":83},{"icon":"http://120.27.23.105/images/icon.png","name":"镜头","pcid":13,"pscid":84}],"name":"摄影摄像","pcid":"13"}]
*/
private String msg;
private String code;
private List<DataBean> data;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* cid : 3
* list : [{"icon":"http://120.27.23.105/images/icon.png","name":"耳机/耳麦","pcid":10,"pscid":61},{"icon":"http://120.27.23.105/images/icon.png","name":"音箱/音响","pcid":10,"pscid":62},{"icon":"http://120.27.23.105/images/icon.png","name":"MP3/MP4","pcid":10,"pscid":63},{"icon":"http://120.27.23.105/images/icon.png","name":"便携/无线音箱","pcid":10,"pscid":64},{"icon":"http://120.27.23.105/images/icon.png","name":"麦克风","pcid":10,"pscid":65}]
* name : 影音娱乐
* pcid : 10
*/
private String cid;
private String name;
private String pcid;
private List<ListBean> list;
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPcid() {
return pcid;
}
public void setPcid(String pcid) {
this.pcid = pcid;
}
public List<ListBean> getList() {
return list;
}
public void setList(List<ListBean> list) {
this.list = list;
}
public static class ListBean {
/**
* icon : http://120.27.23.105/images/icon.png
* name : 耳机/耳麦
* pcid : 10
* pscid : 61
*/
private String icon;
private String name;
private int pcid;
private int pscid;
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPcid() {
return pcid;
}
public void setPcid(int pcid) {
this.pcid = pcid;
}
public int getPscid() {
return pscid;
}
public void setPscid(int pscid) {
this.pscid = pscid;
}
}
}
}
4.model层
public class FenModel {
private Handler handler=new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
public void login(String url, final NewBack newBack){
OkHttpUtils.onGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
Gson gson=new Gson();
LeftUser leftUser = gson.fromJson(string, LeftUser.class);
List<LeftUser.DataBean> data =leftUser.getData();
newBack.onSuccessUser(data);
}
});
}
});
}
public void login2(String url2, final NewBack newBack){
OkHttpUtils.onGet(url2, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
Gson gson=new Gson();
RightUser rightUser = gson.fromJson(string, RightUser.class);
List<RightUser.DataBean> dat = rightUser.getData();
newBack.onSuccessUserBean(dat);
}
});
}
});
}
}
5.p层
public class FenPersenter {
private FenModel fenModel;
private FenView fenView;
public FenPersenter(FenView fenView) {
fenModel = new FenModel();
this.fenView = fenView;
}
public void login(String url){
fenModel.login(url, new NewBack() {
@Override
public void onSuccessUser(List<LeftUser.DataBean> list) {
fenView.viewSuccessUser(list);
}
@Override
public void onSuccessUserBean(List<RightUser.DataBean> rightlist) {
}
@Override
public void fail(String fail) {
}
});
}
public void login2(String url2){
fenModel.login2(url2, new NewBack() {
@Override
public void onSuccessUser(List<LeftUser.DataBean> list) {
}
@Override
public void onSuccessUserBean(List<RightUser.DataBean> rightlist) {
fenView.viewSuccessUserBean(rightlist);
}
@Override
public void fail(String fail) {
}
});
}
}
6.view层
public interface FenView {
void viewSuccessUser(List<LeftUser.DataBean> list);
void viewSuccessUserBean(List<RightUser.DataBean> beanList);
void viewfail(String fail);
}
7.net层 okhttp的封装
public interface NewBack {
void onSuccessUser(List<LeftUser.DataBean> list);
void onSuccessUserBean(List<RightUser.DataBean> rightlist);
void fail(String fail);
public class OkHttpUtils {
private static final String MTHOD_GET = "GET";
private static OkHttpClient client;
public OkHttpUtils() {
}
public static void init(){
client = new OkHttpClient.Builder()
.readTimeout(3000,TimeUnit.MILLISECONDS)
.writeTimeout(3000,TimeUnit.MILLISECONDS)
.connectTimeout(3000,TimeUnit.MILLISECONDS)
.build();
}
public static Request createRequest(String url,String method){
Request.Builder builder=new Request.Builder().url(url);
Request request=null;
switch (method){
case MTHOD_GET:
request = builder.get().build();
break;
}
return request;
}
public static void onGet(String url, Callback callBack){
Request request = createRequest(url, MTHOD_GET);
Call call = client.newCall(request);
call.enqueue(callBack);
}
}
8.app注册
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
OkHttpUtils.init();
}
}
9.mainactivity
public class MainActivity extends AppCompatActivity implements FenView {
private String leftpath = "http://www.zhaoapi.cn/product/getCatagory";
private String rightpath = "http://www.zhaoapi.cn/product/getProductCatagory?cid=";
int page = 3;
private RecyclerView mRecyone;
private RecyclerView mRecytwo;
String url3="";
private MyAdapter myAdapter;
private MyTwoAdapter myTwoAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化数据
initView();
//p层
final FenPersenter fenPersenter = new FenPersenter(this);
fenPersenter.login(leftpath);
url3=rightpath+page;
fenPersenter.login2(url3);
myAdapter = new MyAdapter(this, null);
myTwoAdapter = new MyTwoAdapter(this, null);
myAdapter.setmItemClick(new MyAdapter.ItemClick() {
@Override
public void onItem(int data) {
url3=rightpath+(data+1);
fenPersenter.login2(url3);
}
});
}
private void initView() {
mRecyone = (RecyclerView) findViewById(R.id.recyone);
mRecytwo = (RecyclerView) findViewById(R.id.recytwo);
}
//recyclerview1
@Override
public void viewSuccessUser(List<LeftUser.DataBean> list) {
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);
mRecyone.setLayoutManager(layoutManager);
myAdapter.setList(list);
mRecyone.setAdapter(myAdapter);
}
@Override
public void viewSuccessUserBean(List<RightUser.DataBean> beanList) {
GridLayoutManager gridLayoutManager = new GridLayoutManager(MainActivity.this, 1);
mRecytwo.setLayoutManager(gridLayoutManager);
myTwoAdapter.setList(beanList);
mRecytwo.setAdapter(myTwoAdapter);
}
@Override
public void viewfail(String fail) {
}
}
10权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
在application中注册app
android:name=".App"