背景
通常我们遇到的是纵向滑动列表,但是也会有横向滑动列表.那横向的怎么做呢?
解决方案其实很简单,绝大部分代码和纵向是一样的,只有一个设置不一样.
- 实现效果
- 关键代码
recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL, false)
- 完整代码 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(100)
for (i in 0..99) {
data.add("text-$i")
}
adapter.setData(data)
}
}
2). RvAdapter.kt
class RvAdapter : RecyclerView.Adapter() {
private var mDataList = mutableListOf()
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) {
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
- item_rv.xml
源代码
https://gitee.com/hspbc/recyclerViewDemo/tree/master/horizontalDemo
关于我厦门大学计算机专业 | 前华为工程师 Java | 安卓 | 前端 | 小程序 | 鸿蒙 公众号:蓝不蓝编程