一.效果图

二.布局文件

activity_main.xml布局中

left_item.xml布局中

在right_item.xml布局中

在rigth_item_child.xml

在MainActivity.java中

public class MainActivity extends AppCompatActivity implements ILeftview, IRightview {

private RecyclerView left_recycler;

private RecyclerView right_recycler;

private LeftPresenter leftPresenter;

private RightPresenter rightPresenter;

private LeftAdapter leftAdapter;

private RightAdapter rightAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//初始化控件

init();

leftPresenter.showLeft();

rightPresenter.showRight(1);

}

private void init() {

left_recycler = (RecyclerView) findViewById(R.id.left_recycler);

right_recycler = (RecyclerView) findViewById(R.id.right_recycler);

leftPresenter = new LeftPresenter(this);

rightPresenter = new RightPresenter(this);

}

@Override

public void successLf(final Listresult) {

runOnUiThread(new Runnable() {

@Override

public void run() {

leftAdapter = new LeftAdapter(MainActivity.this);

//布局

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);

linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

left_recycler.setLayoutManager(linearLayoutManager);

left_recycler.setAdapter(leftAdapter);

result.get(0).setClick(true);//默认第一个选中

leftAdapter.setList(result);

//点击左侧实现右侧商品信息展示

leftAdapter.setOnItemLeftClckListener(new LeftAdapter.OnItemLeftClckListener() {

@Override

public void onItemLeftClck(int position) {

//让左右联动起来的

int cid = result.get(position).getCid();

rightPresenter.showRight(cid);

//当点击时显示当前条目的背景和文字的颜色

for (int i = 0; i < result.size(); i++) {

if (position == i) {

result.get(i).setClick(true);

} else {

result.get(i).setClick(false);

}

}

//更新视图(必须有)

leftAdapter.notifyDataSetChanged();

}

});

}

});

}

@Override

public void failerLf(String msg) {

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(MainActivity.this, "获取失败", Toast.LENGTH_SHORT).show();

}

});

}

@Override

public void successRh(final Listresult) {

runOnUiThread(new Runnable() {

@Override

public void run() {

rightAdapter = new RightAdapter(MainActivity.this);

//布局

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);

linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

right_recycler.setLayoutManager(linearLayoutManager);

right_recycler.setAdapter(rightAdapter);

rightAdapter.setList(result);

}

});

}

@Override

public void failerRh(String msg) {

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(MainActivity.this, "获取失败", Toast.LENGTH_SHORT).show();

}

});

}

}

在LeftAdapter中

public class LeftAdapter extends RecyclerView.Adapter{

private Context mcontext;

private Listlist = new ArrayList<>();

public LeftAdapter(Context mcontext) {

this.mcontext = mcontext;

}

public void setList(Listresult) {

this.list = result;

notifyDataSetChanged();

}

@Override

public LeftAdapter.MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

View view = LayoutInflater.from(mcontext).inflate(R.layout.left_item, viewGroup, false);

return new MyViewHolder(view);

}

@Override

public void onBindViewHolder(LeftAdapter.MyViewHolder myViewHolder, final int position) {

myViewHolder.left_name.setText(list.get(position).getName());

//判断点击与不点击的背景

if (list.get(position).isClick()) {

myViewHolder.mlayout.setBackgroundColor(Color.parseColor("#d43c3c"));

myViewHolder.left_name.setTextColor(Color.parseColor("#FFFFFF"));

} else {

myViewHolder.mlayout.setBackgroundColor(Color.parseColor("#FFFFFF"));

myViewHolder.left_name.setTextColor(Color.parseColor("#222222"));

}

}

@Override

public int getItemCount() {

return list.size();

}

class MyViewHolder extends RecyclerView.ViewHolder {

private final RelativeLayout mlayout;

private final TextView left_name;

public MyViewHolder(View itemView) {

super(itemView);

mlayout = itemView.findViewById(R.id.layout);

left_name = itemView.findViewById(R.id.left_name);

//点击条目

itemView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

onItemLeftClckListener.onItemLeftClck(getLayoutPosition());

}

});

}

}

//接口回调

public interface OnItemLeftClckListener {

void onItemLeftClck(int position);

}

private OnItemLeftClckListener onItemLeftClckListener;

public void setOnItemLeftClckListener(OnItemLeftClckListener onItemLeftClckListener) {

this.onItemLeftClckListener = onItemLeftClckListener;

}

}

在RightChildAdapter中

public class RightChildAdapter extends RecyclerView.Adapter{

private Context mcontext;

private ListlistChild;

public RightChildAdapter(Context mcontext, ListlistChild) {

this.mcontext = mcontext;

this.listChild = listChild;

}

@NonNull

@Override

public RightChildAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

View view = LayoutInflater.from(mcontext).inflate(R.layout.rigth_item_child, viewGroup, false);

return new MyViewHolder(view);

}

@Override

public void onBindViewHolder(@NonNull RightChildAdapter.MyViewHolder myViewHolder, int i) {

myViewHolder.mtitle.setText(listChild.get(i).getName());

Picasso.with(mcontext).load(listChild.get(i).getIcon()).into(myViewHolder.mIamge);

}

@Override

public int getItemCount() {

return listChild.size();

}

class MyViewHolder extends RecyclerView.ViewHolder {

TextView mtitle;

ImageView mIamge;

public MyViewHolder(@NonNull View itemView) {

super(itemView);

mIamge = (ImageView) itemView.findViewById(R.id.image);

mtitle = (TextView) itemView.findViewById(R.id.title);

}

}

}

在RightAdapter

public class RightAdapter extends RecyclerView.Adapter{

private Context mcontext;

private Listlist = new ArrayList<>();

public RightAdapter(Context mcontext) {

this.mcontext = mcontext;

}

public void setList(Listresult) {

this.list=result;

notifyDataSetChanged();

}

@NonNull

@Override

public RightAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

View view = LayoutInflater.from(mcontext).inflate(R.layout.right_item, viewGroup, false);

return new MyViewHolder(view);

}

@Override

public void onBindViewHolder(@NonNull RightAdapter.MyViewHolder myViewHolder, int i) {

myViewHolder.mname.setText(list.get(i).getName());

//写下面recycler视图

Listlistchild = this.list.get(i).getList();

RightChildAdapter rightChildAdapter = new RightChildAdapter(mcontext, listchild);

GridLayoutManager gridLayoutManager = new GridLayoutManager(mcontext, 3);

myViewHolder.mRecyclerView.setLayoutManager(gridLayoutManager);

myViewHolder.mRecyclerView.setAdapter(rightChildAdapter);

}

@Override

public int getItemCount() {

return list.size();

}

class MyViewHolder extends RecyclerView.ViewHolder {

RecyclerView mRecyclerView;

TextView mname;

public MyViewHolder(@NonNull View itemView) {

super(itemView);

mname = (TextView) itemView.findViewById(R.id.name);

mRecyclerView = (RecyclerView) itemView.findViewById(R.id.recycleview);

}

}

}

android+京东分类菜单,Android仿京东商品分类相关推荐

  1. Android中实现简单的仿京东详情页面

    前言: 之前做过一个商城项目,实现了类似京东的详情页,采用Coordinatorlatout+Appbarlayout+toolbar实现,实现的效果主要是沉浸式状态栏和标题栏,当图片滑动时标题栏和按 ...

  2. Android瀑布流仿京东,(二) 仿京东顶部伸缩渐变丶自定义viewpager指示器丶viewpager3D回廊丶recyclerview瀑布流...

    效果图如下: demo2.gif Demo2 1.仿京东首页顶部轮播图+搜索栏渐变 public class GradientScrollView extends ScrollView { publi ...

  3. h5仿android 京东三级联动,jquery仿京东商城三级联动代码插件

    2019-3-1更新:location.js文件里第三级县之前使用京东旧域名d.360buy.com的jsonp数据,域名做了跳转首页所以第三加载不出来.现在已经更新为d.jd.com,正常加载.不过 ...

  4. android 双层旋转菜单,Android 高仿【优酷】圆盘旋转菜单的实现

    目前,用户对安卓应用程序的UI设计要求越来越高,因此,掌握一些新颖的设计很有必要. 比如菜单,传统的菜单已经不能满足用户的需求. 其中优酷中圆盘旋转菜单的实现就比较优秀,这里我提供下我的思路及实现,仅 ...

  5. android 下拉菜单,Android仿微信实现下拉列表

    本文要实现微信6.1中点击顶部菜单栏的"+"号按钮时,会弹出一个列表框.这里用的了Activity实现,其实最好的方法可以用ActionBar,不过这货好像只支持3.0以后的版本. ...

  6. android的选项菜单,Android界面菜单(2)—选项菜单

    选项菜单 Android 4.0 系统中,Activity在创建时便会调用 onCreateOptionMenu() 函数初始化自身的菜单系统.在Activity的整个生命周期中,选项菜单是一直被重复 ...

  7. 京东购物车html页面,仿京东购物车页面

    [实例简介] 仿京东购物车页面仿京东购物车页面仿京东购物车页面仿京东购物车页面仿京东购物车页面仿京东购物车页面 [实例截图] [核心代码] 仿京东 └── 仿京东 ├── css │   ├── im ...

  8. android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化

    众所周知,android的底部菜单栏太重要,平时项目一般都是需要用到的,但是网上关于这方面的demo做得太丑了,实在惨不忍睹,所以这里便用RadioGroup+Fragment的方式写了一个,顺便美化 ...

  9. android椭圆转盘菜单,Android CircleMenu:旋转转盘选择Menu

     Android CircleMenu:旋转转盘选择Menu Android CircleMenu是一个可以自由旋转类似转盘样式的选择Menu.其运行效果如动态图所示: 这在中国建设银行官方的AP ...

  10. android 自定义menu菜单,android 自定义menu菜单样式

    Android系统中的menu样式不是太好,可以自定义.运行效果 CustomActivity.java继承Activity.java 在此文件中实现了不同于系统的dialog import java ...

最新文章

  1. 虚拟与现实的距离——VR产业链史上最全梳理收藏版本【上篇】
  2. 分布式计算引擎MapReduce
  3. 冒泡排序算法[C++]
  4. C库函数 - strcspn()
  5. Spring环境的搭建与测试 (spring2.5.6)
  6. android 自定义库,Android自定义Log库
  7. SpringBoot b2b2c 多用户商城系统 (一)构建第一个SpringBoot工程
  8. Windows7下搭建Eclipse+Python开发环境
  9. 数字图像处理(五) 图像复原
  10. php api 版本控制,PHP-API接口版本控制的问题
  11. 非线性系统基于干扰观测器的抗干扰控制
  12. 关于 flex 的资料
  13. 树上战争 HDU - 2545
  14. 【ESP 保姆级教程】疯狂点灯篇 —— 案例:ESP8266 + LED + 按键 + 阿里云物联网平台 + 阿里云物联网Web应用(详细操作过程,全部源码)
  15. 图形学常见概念与算法-常用初等数学公式
  16. chrome证书错误问题
  17. matlab矩阵size,matlab中size函数用法
  18. 关于webservice服务在springboot项目中的开发的介绍
  19. 音视频从入门到精通——FFmpeg数据结构分析
  20. html 如何去掉超链接下的下划线

热门文章

  1. 淘宝千万级并发架构的十四次演进
  2. 最新版千月后台漏洞修复源码分享
  3. 微信小程序自定义导航栏
  4. 半导体物理实验MatLab,Matlab在固体物理中的应用程序.doc
  5. 二进制转格雷码c语言编程,格雷码简介及格雷码与二进制的转换程序
  6. 第21篇 项目进度管理__关键路径法
  7. 第三方支付接口怎么测试
  8. 一周信创舆情观察(11.15~11.21)
  9. 信息系统项目管理师论文范围管理范文(2021上半年范围管理论文)
  10. Axure8.0AxureRP8实战手册