安卓用RecyclerView实现横向滑动列表

2023-12-03 06:20

本文主要是介绍安卓用RecyclerView实现横向滑动列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

通常我们遇到的是纵向滑动列表,但是也会有横向滑动列表.那横向的怎么做呢?

解决方案

其实很简单,绝大部分代码和纵向是一样的,只有一个设置不一样.

  1. 实现效果
  2. 关键代码
recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL, false)
  1. 完整代码
    1). MainActivity.kt
class MainActivity : AppCompatActivity() {lateinit var adapter: RvAdapteroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initRecyclerView()loadData()}private fun initRecyclerView() {recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL, false)adapter = RvAdapter()recyclerView.adapter = adapter}private fun loadData() {val data = ArrayList<String>(100)for (i in 0..99) {data.add("text-$i")}adapter.setData(data)}
}

2). RvAdapter.kt

class RvAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {private var mDataList = mutableListOf<String>()private lateinit var mContext: Contextoverride fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {val data = mDataList[position]holder.itemView.textView.text = dataholder.itemView.setOnClickListener {setOnItemClickListener(data)}}fun setData(dataList: List<String>) {mDataList.clear()mDataList.addAll(dataList)notifyDataSetChanged()}override fun getItemCount(): Int = mDataList.sizeoverride fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {mContext = parent.contextval view = LayoutInflater.from(mContext).inflate(R.layout.item_rv, parent, false)return ViewHolder(view)}private fun setOnItemClickListener(data: String) {mContext.toast(data)}class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!)}

3). 布局文件

  • activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_gravity="center"android:layout_width="match_parent"android:layout_height="wrap_content" />
</LinearLayout>
  • item_rv.xml
<?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="wrap_content"android:layout_gravity="center"android:orientation="vertical"><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@android:color/darker_gray" /><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="100dp"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:gravity="center"android:text="text" /><Viewandroid:layout_width="1dp"android:layout_height="match_parent"android:background="@android:color/darker_gray" /></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@android:color/darker_gray" />
</LinearLayout>

源代码

https://gitee.com/hspbc/recyclerViewDemo/tree/master/horizontalDemo

关于我

厦门大学计算机专业 | 前华为工程师
Java | 安卓 | 前端 | 小程序 | 鸿蒙
公众号:蓝不蓝编程

这篇关于安卓用RecyclerView实现横向滑动列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/448412

相关文章

MySQL进行分片合并的实现步骤

《MySQL进行分片合并的实现步骤》分片合并是指在分布式数据库系统中,将不同分片上的查询结果进行整合,以获得完整的查询结果,下面就来具体介绍一下,感兴趣的可以了解一下... 目录环境准备项目依赖数据源配置分片上下文分片查询和合并代码实现1. 查询单条记录2. 跨分片查询和合并测试结论分片合并(Shardin

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us

MySQL配置多主复制的实现步骤

《MySQL配置多主复制的实现步骤》多主复制是一种允许多个MySQL服务器同时接受写操作的复制方式,本文就来介绍一下MySQL配置多主复制的实现步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 环境准备2. 配置每台服务器2.1 修改每台服务器的配置文件3. 安装和配置插件4. 启动组复制4.

MySQL数据脱敏的实现方法

《MySQL数据脱敏的实现方法》本文主要介绍了MySQL数据脱敏的实现方法,包括字符替换、加密等方法,通过工具类和数据库服务整合,确保敏感信息在查询结果中被掩码处理,感兴趣的可以了解一下... 目录一. 数据脱敏的方法二. 字符替换脱敏1. 创建数据脱敏工具类三. 整合到数据库操作1. 创建服务类进行数据库

MySQL容灾备份的实现方案

《MySQL容灾备份的实现方案》进行MySQL的容灾备份是确保数据安全和业务连续性的关键步骤,容灾备份可以分为本地备份和远程备份,主要包括逻辑备份和物理备份两种方式,下面就来具体介绍一下... 目录一、逻辑备份1. 使用mysqldump进行逻辑备份1.1 全库备份1.2 单库备份1.3 单表备份2. 恢复

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

MyBatis流式查询两种实现方式

《MyBatis流式查询两种实现方式》本文详解MyBatis流式查询,通过ResultHandler和Cursor实现边读边处理,避免内存溢出,ResultHandler逐条回调,Cursor支持迭代... 目录MyBATis 流式查询详解:ResultHandler 与 Cursor1. 什么是流式查询?

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

C++归并排序代码实现示例代码

《C++归并排序代码实现示例代码》归并排序将待排序数组分成两个子数组,分别对这两个子数组进行排序,然后将排序好的子数组合并,得到排序后的数组,:本文主要介绍C++归并排序代码实现的相关资料,需要的... 目录1 算法核心思想2 代码实现3 算法时间复杂度1 算法核心思想归并排序是一种高效的排序方式,需要用