📜  Horizontal RecyclerView android Kotlin 示例 (1)

📅  最后修改于: 2023-12-03 15:15:32.529000             🧑  作者: Mango

Horizontal RecyclerView Android Kotlin 示例

在Android开发中,RecyclerView是常用的控件之一,它提供了高度定制化的列表、网格等展示方式。在这篇文章中,我们将学习如何使用RecyclerView实现横向滑动的列表展示。

实现思路

要实现横向滑动的列表,我们需要改变RecyclerView的布局方式,将其变为水平布局。同时,我们需要使用LinearLayoutManager来控制列表的滑动方向。

示例代码

首先,我们需要在build.gradle添加RecyclerView依赖:

dependencies {
    implementation "androidx.recyclerview:recyclerview:1.1.0"
}

然后,我们定义一个MainActivity,其中包含了一个RecyclerView

class MainActivity : AppCompatActivity() {

    private lateinit var recyclerView: RecyclerView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        recyclerView = findViewById(R.id.recycler_view)
        recyclerView.layoutManager =
            LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)

        val adapter = MyAdapter()
        recyclerView.adapter = adapter

        // 添加假数据
        val list = mutableListOf<String>()
        for (i in 1..20) {
            list.add(i.toString())
        }
        adapter.setData(list)
    }
}

onCreate方法中,我们将RecyclerView的布局方式设置为水平方向,并将自定义的适配器MyAdapter设置给RecyclerView。同时,我们添加了一些假数据用于测试。

然后,我们定义一个MyAdapter,继承自RecyclerView.Adapter

class MyAdapter : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {

    private var dataList = mutableListOf<String>()

    fun setData(dataList: MutableList<String>) {
        this.dataList = dataList
        notifyDataSetChanged()
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_horizontal_recycler, parent, false)
        return MyViewHolder(view)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.tvContent.text = dataList[position]
    }

    override fun getItemCount(): Int {
        return dataList.size
    }

    class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val tvContent: TextView = itemView.findViewById(R.id.tv_content)
    }
}

MyAdapter中,我们定义了一个dataList用于存储数据,并实现了setDate方法来设置数据。在onCreateViewHolder方法中,我们加载了item_horizontal_recycler布局文件,并返回MyViewHolder。在onBindViewHolder方法中,我们将数据显示在对应的TextView中。在getItemCount方法中,我们返回数据的条目数。

最后,我们定义了一个item_horizontal_recycler布局文件:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tv_content"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_margin="5dp"
    android:background="@drawable/bg_item"
    android:gravity="center"
    android:textColor="#fff"
    android:textSize="18sp" />

在这个例子中,我们使用了一个TextView来显示每条数据,这里的布局可以根据实际需求进行调整。

结论

通过上述代码的实现,我们可以轻松地将RecyclerView的布局方式改为水平布局,并完成横向滑动的列表展示。这种布局方式在横向滑动的场景中非常常用,如图片轮播、横向列表展示等。