Android商城开发----点击左侧分类列表右侧更新对应列表内容

news2025/7/7 18:52:40

Android商城开发----点击左侧分类列表右侧更新对应列表内容

目录

    • Android商城开发----点击左侧分类列表右侧更新对应列表内容
      • 一、首先说布局:
      • 二、主要说一下,布局完成后实现点击左侧类别时,右侧展现对应类的商品列表。
        • 主要思想:
        • 源代码:
          • 1.左侧Fragment发送信号
          • 2.右侧Fragment 接受,右侧Fragment.java注册/反注册:
          • 3.右侧Fragment.java中,在onCreateView()中初始化View:
          • 4.订阅事件
          • 5.在右侧RecyclerView的Adapter中,根据position配置商品信息

一、首先说布局:

1.整个分类页是一个Fragment,在这个前面链接里,建的底部导航栏基础上做的,这页是分类的Fragment点击查看 ,同时本文在点击实现类别选中状态切换这篇文章的基础上做的,这篇文章识别了左侧点击的类别项目是哪个,为后续点击实现右侧列表展现做了铺垫。

2.我是在这个基础上自己写了两个Fragment,左侧一个Fragment:内部是一个RecyclerView,用来显示分类列表;右侧是一个Fragment:内部也是一个RecyclerView,显示的是商品列表,商品列表包含左侧商品Icon(ImageView),右侧是标题(TextView)。如下图所示:
在这里插入图片描述
关于布局的问题主要是RecyclerVIew的使用及Adapter的使用,这里先不说啦。

二、主要说一下,布局完成后实现点击左侧类别时,右侧展现对应类的商品列表。

主要思想:

主要思想是,
1.左侧Fragment点击时使用EventBus发送信号(position点击的位置)(这个操作在左侧Fragment的RecyclerView的Adapter中实现的。),
2.右侧Fragment.java接收信号,识别出点击的是哪个类别。
3.Fragment.java将position传给RecyclerView的Adapter,根据类别,填充对应的Icon和Title。
(PS:
相关文章:EventBus使用详解这篇文章写的非常非常详细了,我就是参照这篇文章用的EventBus,你们也去学习一下吧!)

源代码:

1.左侧Fragment发送信号

EventBus发送方,如果不需要接收信号就不用进行EventBus的注册,直接写:

//把点击的选项position传给右侧Fragment
EventBus.getDefault().post(new MessageEvent(position)); 

位置放在左侧Fragment RecyclerView 的adapter中,具体位置如下图。
在这里插入图片描述
这是因为在切换选中背景一文中,我在这里判断了 点击的卡片,点击后切换背景颜色。同时,发送EventBus信号,让右侧的Fragment做出回应。

2.右侧Fragment 接受,右侧Fragment.java注册/反注册:

注册和反注册总是成对出现,注册在onCreate方法中,反注册在onDestory方法中

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //注册EventBus  注册在onCreate方法中
        EventBus.getDefault().register(this);

    }
    @Override
    public void onDestroy(){
        super.onDestroy();
        //反注册EventBus  反注册在onDestory方法中
        EventBus.getDefault().unregister(this);
    }
3.右侧Fragment.java中,在onCreateView()中初始化View:
//onCreateView()
initView();

//在函数外面定义initView()方法
//定义初始化
    private void initView(){
        rightRecyclerView=root.findViewById(R.id.category_list_right);
    }
4.订阅事件

右侧Fragment.java中订阅事件:

//收到消息后,改变recyclerview的列表
//这里方法名可以任意取,但必须添加@Subscribe注解,在这里写下接收到信号后要做的事情
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(MessageEvent event){

        rightRecyclerView.setAdapter(rightAdapter);
        int position=event.getMessage();//获得传的信息,左侧点的是哪个选项
		//将position作为参数传给商品列表的Adapter,让Adapter判断添加对应的商品列表
        rightAdapter=new CategoryListRightAdapter(getActivity(),position);
       // 这里我先打印了下,position的值,我设了三个分类 position是0,1,2
        Log.e(TAG,"onMessageEvent:"+event.getMessage());
    }

5.在右侧RecyclerView的Adapter中,根据position配置商品信息

Adapter.java文件:这里是写右侧RecyclerView内容的adapter文件

private List<Integer> listIcon=new ArrayList<Integer>();
private List<Integer> listTitle=new ArrayList<Integer>();
public CategoryListRightAdapter(Context context,int position){ //这里的position就是前面传过来的position
        if(position==0){  //如果是第一个分类 加载哪个图片,哪个标题 这里个数要一致
            icons=new int[]{R.drawable.icon1, R.drawable.icon2};
            titles= new int[]{R.string.title1, R.string.title2};
        }else if(position==1){//如果是第二个分类 加载哪个图片,哪个标题 
            icons=new int[]{R.drawable.icon3, R.drawable.icon4};
            titles= new int[]{R.string.title3, R.string.title4};
        }else if(position==2){//如果是第三个分类 加载哪个图片,哪个标题 
            icons=new int[]{R.drawable.icon5, R.drawable.icon6};
            titles= new int[]{R.string.title5, R.string.title6};
        }
        lContext=context;
        for (int i=0;i<icons.length;i++){
            listIcon.add(icons[i]);//把他们加进RecyclerView中
            listTitle.add(titles[i]);
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/9668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3响应系统的实现(二)

前言 继上一篇文章&#xff0c;我们已经能够实现一个简单的响应系统了&#xff0c;但是仍然存在很多缺陷&#xff0c;本篇文章将具体叙述一下存在的缺陷以及如何解决&#xff0c;最后实现一个较为完善的响应式系统 解决副作用函数硬编码问题 从上一篇文章中我们不难发现响应…

概率 | 【提神醒脑】重难点专题突破 自用笔记

本文总结参考于 kira 2023概率提神醒脑技巧班 中 —— 重难点专题。 笔记均为自用整理。加油!ヾ(◍∇◍)ノ゙ 一研为定! 一、条件均匀 / 指数 / 二项…分布 -------------------------------------------------------------------------------------------------------------…

基于inquirer实现一个控制台多级选择交互功能

说在前面 &#x1f388;在前端脚手架工具中经常会看到控制台输入参数等操作。例如Vue-cli中初始化项目会提示选择一些参数等。所以在开发脚手架工具或者node控制台程序&#xff0c;就需要用到inquirer工具或者类似的工具。但是使用过inquirer工具的同学应该知道&#xff0c;目前…

SpringSecurity整合SSM和SpringBoot完成方法级权限控制

初识权限管理 权限管理&#xff0c;一般指根据系统设置的安全规则或者安全策略&#xff0c;用户可以访问而且只能访问自己被授权的资源。权限管理几乎出现在任何系统里面&#xff0c;前提是需要有用户和密码认证的系统。 在权限管理的概念中&#xff0c;有两个非常重要的名词&…

SpringBoot SpringBoot 开发实用篇 1 热部署 1.4 关闭热部署功能

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇1 热部署1.4 关闭热部署功能1.4.1 关闭热部署1.4.2 小结1.4.3 总结1 …

大佬神作!Spring Security从应用到源码,这份手册都讲全了,已三刷

简介 平时我们写 Web 项目&#xff0c;都需要用户登录时验证&#xff0c;以及权限管理之类的操作&#xff0c;以前使用过滤器&#xff0c;拦截器等进行管理&#xff0c;原生代码较多。 所以出现了安全框架以供我们使用&#xff0c;安全框架在 Web 应用的主要功能是&#xff1a…

金九失足,10月喜提“Java高分指南”,11月冲击大厂

蓦然回首自己做开发已经十年了&#xff0c;这十年中我获得了很多&#xff0c;技术能力、培训、出国、大公司的经历&#xff0c;还有很多很好的朋友。但再仔细一想&#xff0c;这十年中我至少浪费了五年时间&#xff0c;这五年可以足够让自己成长为一个优秀的程序员&#xff0c;…

VS2017安装教程(详细版)

1.首先下载好安装包 百度网盘下载链接 链接&#xff1a;https://pan.baidu.com/s/1HW8hrLMazRsBkPvkDHkD1Q?pwdz4jg 提取码&#xff1a;z4jg 2.下载到桌面以管理员身份运行 点击继续 3.进入后更改安装位置&#xff0c;选择安装路径&#xff0c;千万不要安装到C盘 4.改完后…

Opencv——直方图、掩膜、直方图均衡化详细介绍及代码实现

一、图像直方图 1.1 定义&#xff1a; 图像直方图是图像的基本属性之一&#xff0c;也是反映图像像素数据分布的统计学特征&#xff0c;其横坐标代表了图像像素点在[0,255]范围中&#xff0c;纵坐标代表图像像素点出现的个数或百分比。如图&#xff1a; 1.2 函数&#xff1a;…

Go程序内存泄露问题快速定位

前几天有同学反馈了 cgo 内存泄露问题&#xff0c;自己也针对这个问题探索了一番&#xff0c;算是为以后解决类似问题提前攒点经验吧。也趁机整理了一下 go 开发过程中内存泄露问题的一些常用排查方法&#xff0c;也希望对新接触 go 的同学有所帮助。整理之余&#xff0c;bcc 工…

面试问题:MD5属于哪种加密算法?千万别踩这些坑

一些小伙伴吐槽&#xff0c;去面试的时候经常听到面试官问这样的问题&#xff0c;“对称加密”、“非对称加密”、“MD5加密”&#xff0c;那么MD5到底属于哪种加密算法&#xff1f;遇到这样的问题&#xff0c;一定要小心&#xff0c;这是面试官给你挖的坑呢&#xff0c;可别傻…

C++——pair用法总结

C——pair用法总结1.pair概述&#xff08;在标头 <utility> 定义&#xff09;2.pair使用2.1成员函数&#xff08;构造函数、赋值函数&#xff09;2.2非成员函数2.3辅助类使用1.pair概述&#xff08;在标头 定义&#xff09; std::pair 是类模板&#xff0c;提供在一个单…

Kotlin MVVM之Jetpack系列ViewModel、LiveData的简单使用

一、MVVM是什么&#xff1f; MVVM分为Model&#xff0c;View&#xff0c;ViewModel 三个部分 Model:数据层&#xff0c;包含数据实体和对数据实体的操作 View:UI层&#xff0c;对应于Activity&#xff0c;XML&#xff0c;负责数据显示以及用户交互。 ViewModel&#xff1a;…

22-Redux-1

//npm init //npm install redux //1 导入redux&#xff08;不能通过es6的方式&#xff09; // commonjs一种 -> node.jsconst redux require(redux)const initialState {counter: 0 } // reducer function reducer(state initialState, action) {switch(action.type) {c…

5 步!用阿里云 Serverless 搭建高质量的图片压缩工具

作者&#xff1a;Regan Yue 本文选自“Serverless 函数计算征集令”活动 什么是 Serverless Serverless 是一种基于云计算的开发方法&#xff0c;它让开发人员可以专注于编写代码来解决业务问题&#xff0c;而不是处理服务器问题。它是独一无二的&#xff0c;因为它支持 Auto …

Rust中级教程:指针生态(引用、原始指针、智能指针)and内存操作(Stack、Heap)

指针的一些概览知识点 1.内存地址&#xff1a;指代内存中单个字节的一个整数。 指针&#xff08;原始指针&#xff09;&#xff1a;就是指向某种类型的一个内存地址。 引用&#xff1a;就是指针&#xff0c;是rust提供的一种抽象&#xff0c;如果是动态大小&#xff0c;就是一…

标记肽MGP-7-氨基-4-甲基香豆素、1926163-53-2、Met-Gly-Pro-AMC

蛋氨酸氨基肽酶1D和2的荧光底物。编号: 152397 中文名称: 标记肽MGP-7-氨基-4-甲基香豆素 英文名: H-Met-Gly-Pro-AMC CAS号: 1926163-53-2 单字母: H2N-MGP-AMC 三字母: H2N-Met-Gly-Pro-AMC 氨基酸个数: 3 分子式: C22H28N4O5S1 平均分子量: 460.55 精确分子量: 460.18 等电点…

【SVN】SVN服务端地址变动,idea切换SVN地址

公司切换了SVN服务端的制度&#xff0c;需要本地对应切换SVN地址&#xff0c;以下为具体步骤 错误方式 直接 项目上右键 --> Subversion --> Relocate &#xff0c;修改 To URL 的值&#xff0c;会报错 https://XXXXX is not the root of the repository 的错误 正确的…

Communication-Efficient Learning of Deep Networks from Decentralized Data

international conference on artificial intelligence and statistics Summary 当前机器学习模型训练中存在着数据隐私保护问题&#xff0c;所以作者提出了FL概念。通过分布式隐私保护进行训练模型。对不平衡、non-IID的数据也更合适。 主要提出了FedSGD和FedAvg算法。FedAv…

Andriod开发R文件爆红相关解决方法及排查方案

1.首先尝试下基本的处理方法&#xff1a; 在IDE中工具栏处选择build 尝试clean project&#xff0c;然后再进行rebuild project或者是make project 若使用的是IDEA或Android studio&#xff0c;在上述方法尝试后可以尝试工具栏中File->Setting->Invalidate Caches/Rest…