Kotlin笔记(48) — RecyclerView的使用(G
2021-02-03 本文已影响0人
奔跑的佩恩
前言
上节我们已经讲到了RecyclerView
的线性布局管理器LinearLayoutManager
的使用,这节让我们来了解下它的网格布局管理器GridLayoutManager
的使用吧
今天涉及知识点有:
- RecyclerView依赖
- RecyclerView网格布局的使用
- 效果图和项目结构图
- 适配器TestAdapter源码
- 需要注意的问题
先来波效果图
效果图.gif
一.RecyclerView依赖
我使用的是Androidx
下的包,所以在使用RecyclerView
之前,我们需要在app_module
对应的build.gradle
中添加以下依赖:
dependencies {
//RecyclerView引用
implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha04'
//其他代码省略
//......
}
RecyclerView
引用的最新版本,可以查看Android中文网
二.RecyclerView网格布局的使用
下面贴出RecyclerView
网格布局管理器在MainActivity
中使用代码:
open class MainActivity : AppCompatActivity(), View.OnClickListener {
private var nameList:MutableList<String> = mutableListOf("幼稚园","小学","初中","高中","大学")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(com.kotlintest.R.layout.activity_main)
initData()
setListener()
}
private fun initData() {
TestAdapter.getMeasure(mRecyclerView,object:TestAdapter.OnMeasureListener{
override fun measure(width: Int, height: Int) {
initRecyclerData(width)
}
})
}
private fun initRecyclerData(width:Int){
var count:Int=4
mRecyclerView.layoutManager = GridLayoutManager(this,count)
var testAdapter:TestAdapter<String> = TestAdapter(this,nameList,width/count)
mRecyclerView.adapter=testAdapter
mRecyclerView.itemAnimator = DefaultItemAnimator() //设置动画
//点击事件
testAdapter.setOnItemClick(object : TestAdapter.OnItemClick {
override fun click(position: Int) {
testAdapter.setIndex(position)
testAdapter.notifyDataSetChanged()
toast("====点击了 ${nameList.get(position)}=")
}
})
}
private fun setListener(){
mBtnTest.setOnClickListener(this@MainActivity)
}
override fun onClick(v: View) {
when(v.id){
com.kotlintest.R.id.mBtnTest -> {
}
}
}
}
三.效果图和项目结构图
效果图.gif 项目结构图.png四. 适配器TestAdapter源码
下面贴出适配器TestAdapter
源码: