1.1主页面布局
<? version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
ns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
tools:context=\".MainActivity\"
android:orientation=\"vertical\">
<TextView
android:layout_width=\"match_parent\"
android:layout_height=\"60dp\"
android:gravity=\"center\"
android:textSize=\"20sp\"
android:textColor=\"#ff0000\"
android:text=\"购物车\"/>
<LinearLayout
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"horizontal\">
<!-- 左边边的列表-->
<android.support.v7.widget.RecyclerView
android:id=\"@+id/recyclerView_zuo\"
android:layout_width=\"100dp\"
android:layout_height=\"match_parent\"
android:background=\"#eeeeee\"/>
<!--间隔线-->
<View
android:id=\"@+id/view_line\"
android:layout_width=\"1dp\"
android:layout_height=\"match_parent\"
android:background=\"#333333\" />
<!-- 右边的列表-->
<android.support.v7.widget.RecyclerView
android:id=\"@+id/recyclerView_you\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
/>
</LinearLayout>
</LinearLayout>
1.2左边布局
<? version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
android:id=\"@+id/ll_shop_type\"
android:layout_width=\"100dp\"
android:layout_height=\"match_parent\"
android:gravity=\"center\"
android:padding=\"10dp\">
<!--展示左边的-->
<TextView
android:id=\"@+id/type_name\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\" />
</LinearLayout>
左边的Adapter
package com.bw.ymy.text1.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.LinearLayout;
import android.widget.TextView;
import com.bw.ymy.text1.R;
import com.bw.ymy.text1.bean.ZuoBean;
import java.util.ArrayList;
import java.util.List;
//左边的Adapter
public class ZuoAdapter extends RecyclerView.Adapter<ZuoAdapter.ViewHolder> {
private Context mcontext;
private List<ZuoBean.DataBean> mlist=new ArrayList<>();
public ZuoAdapter(Context context) {
this.mcontext = context;
}
public void setData(List<ZuoBean.DataBean> list)
{
this.mlist=list;
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//获取布局
View view=LayoutInflater.from(mcontext).inflate(R.layout.zuoAdapter,null);
ViewHolder viewHolder1=new ViewHolder(view);
return viewHolder1;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
//显示名字
viewHolder.name.setText(mlist.get(i).getName());
//点击进去显示更多
viewHolder.linearLayout.set Listener(new View. Listener() {
@Override
public void (View v) {
if(m Listener != null){
//getcid bean类是int 需要自己改成String
m Listener. (i, mlist.get(i).getCid());
}
}
});
}
@Override
public int getItemCount() {
return mlist.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private LinearLayout linearLayout;
private TextView name;
public ViewHolder(@NonNull View itemView) {
super(itemView);
name=itemView.findViewById(R.id.type_name);
linearLayout=itemView.findViewById(R.id.ll_shop_type);
}
}
//点击接口
private Listener m Listener;
public void set Listener( Listener listener) {
this.m Listener = listener;
}
public interface Listener {
void (int position, String cid);
}
}
1.3右边的
<? version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:gravity=\"center_vertical\"
android:padding=\"4dp\"
android:orientation=\"horizontal\">
<!--右边集合里面的数据-->
<ImageView
android:id=\"@+id/iv_shop_type_product_linear\"
android:layout_width=\"40dp\"
android:layout_height=\"40dp\" />
<TextView
android:id=\"@+id/tv_shop_type_product_linear\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:textSize=\"14sp\"
android:layout_marginLeft=\"10dp\" />
</LinearLayout>
右边的adapter
package com.bw.ymy.text1.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bw.ymy.text1.R;
import com.bw.ymy.text1.bean.YouBean;
import java.util.ArrayList;
import java.util.List;
//右边的adapter
public class YouAdapter extends RecyclerView.Adapter<YouAdapter.MyViewHolder> {
private Context mcontext;
private List<YouBean.Data.ProductData> mlist=new ArrayList<>();
//需要注意 不要弄错
public YouAdapter(Context context) {
this.mcontext = context;
}
public void setData(List<YouBean.Data.ProductData> list)
{
this.mlist=list;
notifyDataSetChanged();
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//获取布局
View view=View.inflate(mcontext,R.layout.youadapter,null);
MyViewHolder viewHolder=new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
Glide.with(mcontext).load(mlist.get(i).getIcon()).into(myViewHolder.icon);
myViewHolder.iname.setText(mlist.get(i).getName());
}
@Override
public int getItemCount() {
return mlist.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
private ImageView icon;
private TextView iname;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
icon=itemView.findViewById(R.id.iv_shop_type_product_linear);
iname=itemView.findViewById(R.id.tv_shop_type_product_linear);
}
}
}
1.4右边里面嵌套一个布局
<? version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"vertical\">
<!--右边布局-->
<TextView
android:id=\"@+id/tv_shop_name\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:padding=\"2dp\"
android:textSize=\"16sp\"
/>
<RelativeLayout
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\">
<android.support.v7.widget.RecyclerView
android:id=\"@+id/recyclerview_shop_product\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"></android.support.v7.widget.RecyclerView>
</RelativeLayout>
</LinearLayout>
嵌套的adapter
package com.bw.ymy.text1.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bw.ymy.text1.R;
import com.bw.ymy.text1.bean.YouBean;
import java.util.ArrayList;
import java.util.List;
//右边集合里面嵌套集合
public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder>{
private List<YouBean.Data> mlist=new ArrayList<>();
private Context mcontext;
public Adapter(Context context) {
this.mcontext = context;
}
public void setData(List<YouBean.Data> list) {
this.mlist = list;
notifyDataSetChanged();
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
//获取布局
View view=View.inflate(mcontext,R.layout.produce_adapter,null);
MyViewHolder myViewHolder=new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
myViewHolder.name.setText(mlist.get(i).getName());
//右侧有Recview展示 YouAdapter 把上一个右边展示的Adapter 拿过来
final YouAdapter adapter=new YouAdapter(mcontext);
LinearLayoutManager layoutManager=new LinearLayoutManager(mcontext);
myViewHolder.mrecyclerView.setLayoutManager(layoutManager);
myViewHolder.mrecyclerView.setAdapter(adapter);
myViewHolder.mrecyclerView.addItemDecoration(new DividerItemDecoration(mcontext,DividerItemDecoration.VERTICAL));
adapter.setData(mlist.get(i).getList());
}
@Override
public int getItemCount() {
return mlist.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
private TextView name;
private RecyclerView mrecyclerView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
name=itemView.findViewById(R.id.tv_shop_name);
mrecyclerView=itemView.findViewById(R.id.recyclerview_shop_product);
}
}
}
2.1主页面
package com.bw.ymy.text1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.bw.ymy.text1.adapter.Adapter;
import com.bw.ymy.text1.adapter.YouAdapter;
import com.bw.ymy.text1.adapter.ZuoAdapter;
import com.bw.ymy.text1.bean.YouBean;
import com.bw.ymy.text1.bean.ZuoBean;
import com.bw.ymy.text1.presenter.IPresenterlpl;
import com.bw.ymy.text1.view.IView;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements IView {
private IPresenterlpl iPresenterlpl;
private ZuoAdapter zuoAdapter;
private Adapter adapter;
private RecyclerView recyclerView1,recyclerView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iPresenterlpl=new IPresenterlpl(this);
//获取资源id
initView();
//展示左侧数据
Lefttype();
//右侧
getData();
}
//右侧
private void getData() {
recyclerView2=findViewById(R.id.recyclerView_you);
LinearLayoutManager layoutManager=new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView2.setLayoutManager(layoutManager);
recyclerView2.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
adapter= new Adapter(this);
recyclerView2.setAdapter(adapter);
}
//左侧
private void initView() {
recyclerView1=findViewById(R.id.recyclerView_zuo);
LinearLayoutManager layoutManagerleft=new LinearLayoutManager(this);
layoutManagerleft.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView1.setLayoutManager(layoutManagerleft);
recyclerView1.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
zuoAdapter=new ZuoAdapter(this);
recyclerView1.setAdapter(zuoAdapter);
//点击显示右边的数据
zuoAdapter.set Listener(new ZuoAdapter. Listener() {
@Override
public void (int position, String cid) {
righttype(cid);
}
});
}
//左边
private void Lefttype() {
Map<String,String> map=new HashMap<>();
iPresenterlpl.getRequest(Apis.URL_PRODUCT_GET_CATAGORY,map,ZuoBean.class);
}
//右边
private void righttype(String cid) {
Map<String,String> map=new HashMap<>();
map.put(Uid.MAP_KEY_PRODUCT_GET_CATAGORY_CID,cid);
iPresenterlpl.getRequest(Apis.URL_PRODUCT_GET_PRODUCT_CATAGORY,map,YouBean.class);
}
@Override
public void onSuccess( data) {
//左边
if(data instanceof ZuoBean)
{
ZuoBean zuoBean= (ZuoBean) data;
zuoAdapter.setData(zuoBean.getData());
// //右边
}else if(data instanceof YouBean)
{
YouBean youBean= (YouBean) data;
adapter.setData(youBean.getData());
}
}
}
3.Apis
package com.bw.ymy.text1;
public class Apis {
//左边
public static final String URL_PRODUCT_GET_CATAGORY = \"http://www.zhaoapi.cn/product/getCatagory\";
//右边
public static final String URL_PRODUCT_GET_PRODUCT_CATAGORY = \"http://www.zhaoapi.cn/product/getProductCatagory\";
}
4.Uid
package com.bw.ymy.text1;
public class Uid {
public static final String MAP_KEY_GET_PRODUCT_UID= \"uid\";
public static final String MAP_KEY_PRODUCT_GET_CATAGORY_CID= \"cid\";
}
5.右边的bean类
package com.bw.ymy.text1.bean;
import java.util.List;
public class YouBean {
private String msg;
private String code;
private List<Data> 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<Data> getData() {
return data;
}
public void setData(List<Data> data) {
this.data = data;
}
public class Data{
private String cid;
private String name;
private String pcid;
private List<ProductData> 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<ProductData> getList() {
return list;
}
public void setList(List<ProductData> list) {
this.list = list;
}
public class ProductData{
private String icon;
private String name;
private String pcid;
private String 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 String getPcid() {
return pcid;
}
public void setPcid(String pcid) {
this.pcid = pcid;
}
public String getPscid() {
return pscid;
}
public void setPscid(String pscid) {
this.pscid = pscid;
}
}
}}
6.左边的bean类
package com.bw.ymy.text1.bean;
import java.util.List;
public class ZuoBean {
/**
* 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 String cid;
private String createtime;
private String icon;
private int ishome;
private String name;
public String getCid() {
return cid;
}
public void setCid(String 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;
}
}
}
权限:
build.gradle
//okhttp依赖
implementation \'com.squareup.okhttp3:okhttp:3.11.0\'
implementation \'com.squareup.okhttp3:logging-interceptor:3.11.0\'
// glide加载图片依赖
implementation \'com.github.bumptech.glide:glide:4.8.0\'
//recyclerview依赖
implementation \'com.android.support:recyclerview-v7:28.0.0\'
//gson
implementation \'com.google.code.gson:gson:2.8.5\'
//Xre
implementation \'com.jcodecraeer:xrecyclerview:1.5.9\'
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == \'com.android.support\') {
if (!requested.name.startsWith(\"multidex\")) {
details.useVersion \'28.0.0\'//根据你的底下appcompat-v7版本
}
}
}
}
继续阅读与本文标签相同的文章
-
语音顶会Interspeech 论文解读|Investigation of Transformer based Spelling Correction Model for CTC-based End-to-End Mandarin Speech Recognition
2026-05-18栏目: 教程
-
阿里云“网红"运维工程师白金:做一个平凡的圆梦人 | 9月11号栖夜读
2026-05-18栏目: 教程
-
十位大师零距离,云栖大会通票+限量周边,还不够诱人吗亲? | 开发者必读(062期)
2026-05-18栏目: 教程
-
相同类中方法间调用时日志Aop失效处理
2026-05-18栏目: 教程
-
“2019密码应用高峰论坛”,探讨国密证书全生态应用
2026-05-18栏目: 教程
