在Kotlin中的RecyclerView初步探索

实现一个简易的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)
}

列表效果图

猜你喜欢

转载自blog.csdn.net/qq_17798399/article/details/85280005