文章目录

  • 前言
  • 一、效果图
  • 二、使用步骤
    • 1.xml布局
    • 2.代码
    • 3.HomeHxBean
    • 3.adapter
    • 4.item布局
    • 5.两个drawable
  • 总结


前言

横向滑动列表有多种实现方式,也可以用tablayout,也可以用recyclerview,今天主要介绍recyclerview。


一、效果图

在这里插入图片描述

二、使用步骤

1.xml布局

代码如下(示例):

		<androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/hxlist"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="15dp"android:layout_marginTop="10dp"android:layout_marginRight="15dp"android:overScrollMode="never"android:scrollbars="none" />

2.代码

//实例化private lateinit var hxlist: RecyclerViewprivate lateinit var zpkjadapter: ZpkjAdapter1private lateinit var hxbean: MutableList<HomeHxBean>hxbean = mutableListOf()for (i in 1..5) {var item = HomeHxBean()item.id = "" + iitem.name = "广告任务$i"if (i == 1) {item.isxz = true} else {item.isxz = false}hxbean.add(item)}hxlist = rootView!!.findViewById(R.id.hxlist)hxlist.layoutManager = LinearLayoutManager(requireContext(),LinearLayoutManager.HORIZONTAL,false) //横向显示zpkjadapter = ZpkjAdapter1(hxbean, requireContext())hxlist.adapter = zpkjadapter

3.HomeHxBean

public class HomeHxBean {public String id;public String name;public boolean isxz=false;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean isIsxz() {return isxz;}public void setIsxz(boolean isxz) {this.isxz = isxz;}@Overridepublic String toString() {return "HomeHxBean{" +"id='" + id + '\'' +", name='" + name + '\'' +", isxz=" + isxz +'}';}
}

3.adapter

/*** 作者:CaoLiulang* ❤* Date:2024/12/24* ❤* 模块 横向listadapter*/
public class ZpkjAdapter1 extends RecyclerView.Adapter<ZpkjAdapter1.ViewHolder> {private List<HomeHxBean> list;private Context context;public ZpkjAdapter1(List<HomeHxBean> list, Context context) {this.list = list;this.context = context;}/*** 加载更多** @param mPageList*/public void setData(List<HomeHxBean> mPageList) {try {if (mPageList != null) {int previousSize = 0;try {previousSize = list.size();} catch (Exception e) {previousSize = 0;}int sizez = previousSize + 2;list.addAll(mPageList);notifyItemRangeInserted(sizez, mPageList.size());}} catch (Exception e) {e.printStackTrace();}}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.hxlistmy_item1, parent, false);ViewHolder viewHolder = new ViewHolder(view);return viewHolder;}/*** 类似GetView** @param holder* @param position*/@Overridepublic void onBindViewHolder(final ViewHolder holder, @SuppressLint("RecyclerView") final int position) {System.out.println("数据打印:-->" + list.get(position).name);holder.text_szr.setText(list.get(position).name);if (list.get(position).isxz) {holder.text_szr.setBackgroundResource(R.drawable.bzhs_lvse_20);holder.text_szr.setTextColor(Color.parseColor("#ffffff"));} else {holder.text_szr.setBackgroundResource(R.drawable.bzhs_huise_20);holder.text_szr.setTextColor(Color.parseColor("#4d061C1A"));}holder.text_szr.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {for (int i = 0; i < list.size(); i++) {list.get(i).isxz = false;}list.get(position).isxz = true;notifyDataSetChanged();}});}//添加元素,需要告诉UI线程布局的变动public void update() {notifyDataSetChanged();}/*** 长度** @return*/@Overridepublic int getItemCount() {return list.size();}/*** 初始化组件*/class ViewHolder extends RecyclerView.ViewHolder {TextView text_szr;public ViewHolder(final View itemView) {super(itemView);text_szr = itemView.findViewById(R.id.text_szr);}}
}

4.item布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="32dp"><TextViewandroid:id="@+id/text_szr"android:layout_width="wrap_content"android:layout_height="match_parent"android:background="@drawable/bzhs_lvse_20"android:gravity="center"android:paddingLeft="15dp"android:paddingRight="15dp"android:layout_marginRight="10dp"android:text="广告任务"android:textColor="#ffffff"android:textSize="16dp" /></LinearLayout>

5.两个drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><!-- 背景颜色 --><solid android:color="#02C7AB" /><!-- 控制边界线颜色和大小 --><strokeandroid:width="1dp"android:color="#02C7AB" /><!-- 控制圆角大小 --><corners android:radius="20dp" /></shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><!-- 背景颜色 --><solid android:color="#F1F1F1" /><!-- 控制边界线颜色和大小 --><strokeandroid:width="1dp"android:color="#F1F1F1" /><!-- 控制圆角大小 --><corners android:radius="20dp" /></shape>

总结

以上就是实现横向列表的功能了,很简单,需要自取。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于物联网的基础知识(二)——物联网体系结构分层

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于物联网的基础知识&#xff08;二&a…

【机器人】复现 WMNav 具身导航 | 将VLM集成到世界模型中

WMNav 是由VLM视觉语言模型驱动的&#xff0c;基于世界模型的对象目标导航框架。 设计一种预测环境状态的记忆策略&#xff0c;采用在线好奇心价值图来量化存储&#xff0c;目标在世界模型预测的各种场景中出现的可能性。 本文分享WMNav复现和模型推理的过程&#xff5e; 下…

英语学习5.17

attract &#x1f449; 前缀&#xff1a;at-&#xff08;朝向&#xff09; &#x1f449; 含义&#xff1a;吸引&#xff08;朝某处拉&#xff09; 例句&#xff1a;The flowers attract bees. &#xff08;花吸引蜜蜂。&#xff09; distract &#x1f449; 前缀&#xff…

【软考 McCabe度量法】

McCabe度量法&#xff08;McCabe’s Cyclomatic Complexity&#xff09;是由Thomas McCabe提出的一种用于衡量程序模块环路复杂性的软件度量方法。它通过分析代码的控制流结构来评估程序的复杂度&#xff0c;帮助开发者识别难以维护或测试风险较高的代码区域。 一、McCabe度量法…

解读 TypeScript 枚举Enum

TypeScript 枚举通过命名常量、类型安全和结构化组织&#xff0c;显著提升代码质量。使用时需根据场景选择合适的类型&#xff08;数字、字符串或常量枚举&#xff09;&#xff0c;并权衡性能与动态访问需求。掌握其特性和使用的场景&#xff0c;能在复杂项目中有效提升代码的可…

MODBUS RTU通信协议详解与调试指南

一、MODBUS RTU简介 MODBUS RTU&#xff08;Remote Terminal Unit&#xff09;是一种基于串行通信&#xff08;RS-485/RS-232&#xff09;的工业标准协议&#xff0c;采用二进制数据格式&#xff0c;具有高效、可靠的特点&#xff0c;广泛应用于PLC、传感器、变频器等工业设备…

TCP/UDP协议原理和区别 笔记

从简单到难吧 区别就是TCP一般用于安全稳定的需求&#xff0c;UDP一般用于不那么需要完全数据的需求&#xff0c;比如说直播&#xff0c;视频等。 再然后就是TPC性能慢于UDP。 再然后我们看TCP的原理&#xff08;三次握手&#xff0c;数据传输&#xff0c;四次挥手&#xff0…

Jackson使用详解

JSON Jackson是java提供处理json数据序列化和反序列的工具类&#xff0c;在使用Jackson处理json前&#xff0c;我们得先掌握json。 JSON数据类型 类型示例说明字符串&#xff08;String&#xff09;"hello"双引号包裹&#xff0c;支持转义字符&#xff08;如 \n&a…

C语言| 指针变量的定义

C语言| 指针的优点-CSDN博客 * 表示“指向”&#xff0c;为了说明指针变量和它所指向的变量之间的联系。 int * i&#xff1b;//表示指针变量i里面存放的地址&#xff0c;所指向的存储单元里的【数据】。 【指针变量的定义】 C语言规定所有变量&#xff0c;在使用前必须先定…

Java 快速转 C# 教程

以下是一个针对 Java 开发者快速转向 C# 的简明教程&#xff0c;重点对比 Java 与 C# 的异同&#xff0c;帮助你快速上手。 项目结构&#xff1a; .sln &#xff1a;解决方案文件&#xff0c;管理多个项目之间的依赖关系。.csproj &#xff1a;项目文件&#xff0c;定义目标框…

EasyExcel详解

文章目录 一、easyExcel1.什么是easyExcel2.easyExcel示例demo3.easyExcel read的底层逻辑~~4.easyExcel write的底层逻辑~~ 二、FastExcel1.为什么更换为fastExcel2.fastExcel新功能 一、easyExcel 1.什么是easyExcel 内容摘自官方&#xff1a;Java解析、生成Excel比较有名的…

jvm安全点(三)openjdk17 c++源码垃圾回收之安全点结束,唤醒线程

1. VMThread::inner_execute() - 触发安全点​​ cpp 复制 void VMThread::inner_execute(VM_Operation* op) { if (op->evaluate_at_safepoint()) { SafepointSynchronize::begin(); // 进入安全点&#xff0c;阻塞所有线程 // ...执行GC等操作... SafepointSynchronize::…

102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用

二叉树的层序遍历是一种经典的遍历方式&#xff0c;它要求按层级逐层访问二叉树的节点。通常我们会使用队列来实现层序遍历&#xff0c;但递归法也是一种可行且有趣的思路。本文将深入探讨递归法解决二叉树层序遍历的核心难点&#xff0c;并结合代码和模拟过程进行详细讲解。 …

首个窗口级无人机配送VLN系统!中科院LogisticsVLN:基于MLLM实现精准投递

导读 随着智能物流需求日益增长&#xff0c;特别是“最后一公里”配送场景的精细化&#xff0c;传统地面机器人逐渐暴露出适应性差、精度不足等瓶颈。为此&#xff0c;本文提出了LogisticsVLN系统——一个基于多模态大语言模型的无人机视觉语言导航框架&#xff0c;专为窗户级别…

WPF Datagrid 数据加载和性能

这篇文章并非讨论 WPF Datagrid 的性能数据&#xff0c;而只是简单介绍一下为了使其性能良好&#xff0c;你需要注意哪些方面。我不太想使用性能分析器来展示实际数据&#xff0c;而是尽可能地使用了 Stopwatch 类。这篇文章不会深入探讨处理海量数据的技术&#xff0c;例如分页…

matlab求矩阵的逆、行列式、秩、转置

inv - 计算矩阵的逆 用途&#xff1a;计算一个可逆矩阵的逆矩阵。 D [1, 2; 3, 4]; % 定义一个2x2矩阵 D_inv inv(D); % 计算矩阵D的逆 disp(D_inv);det - 计算矩阵的行列式 用途&#xff1a;计算方阵的行列式。 E [1, 2; 3, 4]; determinant det(E); % 计算行列式 disp…

ridecore流水线解读

文章目录 流水线stage分属前后端PCpipelineIFIDDPDP 与 SW 中间没有latchSWCOM 源码地址 流水线stage分属前后端 IF -> ID -> DP -> SW -> EX -> COM分类阶段说明前端IF指令获取阶段。PC 使用分支预测器&#xff0c;访问指令存储器。典型前端操作。前端ID解码并…

【SpringBoot】关于MP使用中配置了数据库表前缀的问题

problem 使用MP时&#xff0c;在application.yml配置文件中配置了MP匹配数据库表中的表名时的前缀作了规定&#xff0c;如下&#xff1a; 那么当我运行时报错了错误&#xff0c;报错信息如下&#xff1a; 因为我数据库表的书类表名是book&#xff0c;MP在匹配时使用了表名前…

印度Rummy游戏支付通道申请策略:技巧类游戏的合规与创新

本文为印度支付申请科普文&#xff0c;自去年开始&#xff0c;印度Rummy类游戏申请印度支付都需要拥有AIGF的会员及产品证书。 如需要rummy可以通过AIGF审核的源。码&#xff0c;或咨询AIGF的相关内容&#xff0c;可以联。系老妙。 印度作为全球棋牌类游戏增长最快的市场之一&…

日志与策略模式

什么是设计模式 IT⾏业 ,为了让 菜鸡们不太拖⼤佬的后腿, 于是⼤佬们针对⼀些经典的常⻅的场景, 给定了⼀些对应的解决⽅案, 这个就是 设计模式 日志认识 计算机中的⽇志是记录系统和软件运⾏中发⽣事件的⽂件&#xff0c;主要作⽤是监控运⾏状态、记录异常信 息&#xff…