相关文章推荐
直爽的柿子  ·  matlab中simulink逆变器 - ...·  2 月前    · 
坚韧的乌冬面  ·  畅游文化海洋 ...·  3 月前    · 
踏实的佛珠  ·  百度一下·  1 年前    · 
小眼睛的火车  ·  当男人恋爱时 - ...·  1 年前    · 
背景

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

解决方案

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


  1. 实现效果
    安卓用RecyclerView实现横向滑动列表_安卓
  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>

源代码

​​

关于我

厦门大学计算机专业 | 前华为工程师

分享编程技术,没啥深度,但看得懂,适合初学者。

Java | 安卓 | 前端 | 小程序 | 鸿蒙

公众号:花生皮编程

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