实现一个简易的RecyclerView
首先是Activity代码,只包含了一个RecyclerView
class MainActivity : AppCompatActivity() {
val items = listOf(
"Android之View的诞生之谜",
"Android之自定义View的死亡三部曲之Measure",
"Using ThreadPoolExecutor in Android ",
"Kotlin 泛型定义与 Java 类似,但有着更多特性支持。",
"Android异步的姿势,你真的用对了吗?",
"Android 高质量录音库。",
"Android 边缘侧滑效果,支持多种场景下的侧滑退出。"
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var listview = findViewById<TextView>(R.id.list_view) as RecyclerView
listview.layoutManager = LinearLayoutManager(this) //设置布局管理器
listview.adapter = MainAdapter(items) //绑定适配器
}
}
所使用的layout文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<android.support.v7.widget.RecyclerView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
RecyclerView所使用的Adapter:
//创建Adapter,继承RecyclerView.Adapter<VH>的Adapter类(VH是ViewHolder的类名)
class MainAdapter(val items : List<String>) : RecyclerView.Adapter<MainAdapter.ViewHolder>() {
//这个方法主要生成为每个Item inflater出一个View,但是该方法返回的是一个ViewHolder
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(TextView(parent.context))
}
//这个方法就类似于BaseAdapter的getCount方法了,即总共有多少个条目
override fun getItemCount(): Int = items.size
//这个方法主要用于适配渲染数据到View中
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.textView.text = items[position]
}
//创建ViewHolder,在Adapter中创建一个继承RecyclerView.ViewHolder的静态内部类,记为VH
class ViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView)
}