首页 > 解决方案 > RecycleView Kotlin 与 ArrayList 总是大小 = 0

问题描述

我有一个RecycleView使用 Kotlin 的ArrayList. 这是代码:

class TestProvider(val text: ArrayList<String> , val context:Context): RecyclerView.Adapter<TestProvider.holder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): holder {

       return holder(LayoutInflater.from(context).inflate(R.layout.testitem,parent,false))
    }

    override fun getItemCount(): Int {
        return text.size
    }

    override fun onBindViewHolder(holder: holder, position: Int) {

        holder.txtText.text=text[position]
    }


    class holder(item:View): RecyclerView.ViewHolder(item) {
        var txtText:TextView=item.findViewById(R.id.txtTest)
    }
}
      <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/txtTest"/>

    </LinearLayout>
     var task1="abdef"
    internal var dateStart: Date? = null
        internal var dateEnd: Date? = null
        var taskProvider: Provider= Provider()
        var TaskList= ArrayList<String>()
        lateinit var taskAdapter: TestProvider
            TaskList.add(0,task1)
            TaskList.add(task1)
            TaskList.add(task1)
           taskAdapter = TestProvider(TaskList,this)
            rcvTest.addItemDecoration(dividerItemDecoration)
            rcvTest.layoutManager = linearLayoutManager
            rcvTest.setHasFixedSize(true)
            rcvTest.adapter = taskAdapter
           taskAdapter.notifyDataSetChanged()

RecycleView始终大小为 0的文本。

标签: androidkotlinandroid-recyclerview

解决方案


我试图重建您的应用程序,并且体验到您的适配器似乎是错误的。请将类声明更改为:

class TestProvider(val text: ArrayList<String>, val context: Context) : RecyclerView.Adapter<TestProvider.holder>() {

此外,您的 testitem 布局的高度应该是 wrap_content,否则一个项目会占据整个屏幕


推荐阅读