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

背景

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

解决方案

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

  1. 实现效果


  2. 关键代码
recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL, false)
  1. 完整代码
    1). MainActivity.kt
class MainActivity : AppCompatActivity() {
    lateinit var adapter: RvAdapter

    override 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: Context
    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        val data = mDataList[position]
        holder.itemView.textView.text = data
        holder.itemView.setOnClickListener {
            setOnItemClickListener(data)
        }
    }

    fun setData(dataList: List<String>) {
        mDataList.clear()
        mDataList.addAll(dataList)
        notifyDataSetChanged()
    }

    override fun getItemCount(): Int = mDataList.size

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        mContext = parent.context
        val 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.RecyclerView
        android: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">

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="100dp">

        <TextView
            android: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" />

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="@android:color/darker_gray" />

    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray" />
</LinearLayout>

源代码

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,913评论 1 32
  • 就在离月总结还有一周之际,2组远远地抛离1组60分之遥!易效能天使6班1组决定要创下集体零晨5点跑10公里的壮举!...
    做自己的女王Vivian阅读 2,622评论 0 2
  • 正男 小豆豆的妈妈是一个真正的好人。种族歧视在世界各处都有。现在的人有多少人带着种族歧视,有多少人没有。我不知道。...
    真爱刘洪敏阅读 3,110评论 0 0
  • 题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点...
    难以置信的优雅阅读 1,450评论 0 0
  • 赫狗在努力阅读 1,409评论 0 1

友情链接更多精彩内容