Android 回收视图不显示项目。在Java中,在Kotlin中效果很好,而不是

Android 回收视图不显示项目。在Java中,在Kotlin中效果很好,而不是,android,kotlin,Android,Kotlin,我试图遵循与Java相同的实现方式。但由于某些原因,它不起作用。调试器显示程序甚至不进入适配器内部 活动代码 class MainActivity : AppCompatActivity(), MyRecyclerViewAdapter.ItemClickListener { lateinit var input: EditText lateinit var button : Button lateinit var recycler : RecyclerView

我试图遵循与Java相同的实现方式。但由于某些原因,它不起作用。调试器显示程序甚至不进入适配器内部

活动代码

    class MainActivity : AppCompatActivity(), MyRecyclerViewAdapter.ItemClickListener {
    lateinit var input: EditText
    lateinit var button : Button
    lateinit var recycler : RecyclerView
    lateinit var adapter: MyRecyclerViewAdapter

    var data : List<Animal> = listOf()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        data.toMutableList().add(Animal("First", "Second"))
        data.toMutableList().add(Animal("111", "222"))
        data.toMutableList().add(Animal("444", "333"))
        data.toMutableList().add(Animal("First", "Second"))
        data.toMutableList().add(Animal("111", "222"))
        data.toMutableList().add(Animal("444", "333"))
        data.toMutableList().add(Animal("First", "Second"))
        data.toMutableList().add(Animal("111", "222"))
        data.toMutableList().add(Animal("444", "333"))
        data.toMutableList().add(Animal("First", "Second"))
        data.toMutableList().add(Animal("111", "222"))
        data.toMutableList().add(Animal("444", "333"))

        input = findViewById(R.id.edit)
        button = findViewById(R.id.button)
        recycler = findViewById(R.id.recycler)
        adapter = MyRecyclerViewAdapter(this, data)

        recycler.layoutManager = LinearLayoutManager(this)
        adapter.setOnClickListener(this)
        recycler.adapter = adapter
    }

    override fun onItemClick(view: View, position: Int) {
        TODO("Not yet implemented")
    }
}
class MainActivity:AppCompatActivity(),MyRecycleServiceAdapter.ItemClickListener{
lateinit变量输入:EditText
lateinit变量按钮:按钮
lateinit变量回收器:RecyclerView
lateinit变量适配器:MyRecycleServiceAdapter
变量数据:List=listOf()
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
data.toMutableList().add(动物(“第一”、“第二”))
data.toMutableList().add(动物(“111”、“222”))
data.toMutableList().add(动物(“444”、“333”))
data.toMutableList().add(动物(“第一”、“第二”))
data.toMutableList().add(动物(“111”、“222”))
data.toMutableList().add(动物(“444”、“333”))
data.toMutableList().add(动物(“第一”、“第二”))
data.toMutableList().add(动物(“111”、“222”))
data.toMutableList().add(动物(“444”、“333”))
data.toMutableList().add(动物(“第一”、“第二”))
data.toMutableList().add(动物(“111”、“222”))
data.toMutableList().add(动物(“444”、“333”))
输入=findViewById(R.id.edit)
按钮=findViewById(R.id.button)
回收商=findViewById(R.id.recycler)
适配器=MyRecycleServiceAdapter(此,数据)
recycler.layoutManager=LinearLayoutManager(此)
adapter.setOnClickListener(此)
recycler.adapter=适配器
}
覆盖MClick(视图:视图,位置:Int){
TODO(“尚未实施”)
}
}
适配器

    class MyRecyclerViewAdapter(private val context : Context, private val mData : List<Animal>) :
    RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder>() {

    lateinit var mClickListener : ItemClickListener
    var mInflater : LayoutInflater = LayoutInflater.from(context)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = mInflater.inflate(R.layout.recyclerview_row, parent, false)
        return ViewHolder(view)
    }

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

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val name : String = mData[position].name
        val last : String = mData[position].last
        holder.mName.text = name
        holder.mLast.text = last
    }

    fun getItem(id : Int) : Animal{
        return mData[id]
    }

    fun setOnClickListener(itemClickListener : ItemClickListener){
        this.mClickListener = itemClickListener
    }

    interface ItemClickListener{
        fun onItemClick(view : View, position: Int)
    }
    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
         var mName : TextView = itemView.findViewById<TextView>(R.id.tvAnimalName)
         var mLast : TextView = itemView.findViewById<TextView>(R.id.tvAnimalLastName)

        override fun onClick(p0: View?) {
        }
    }


}
类MyRecycleServiceAdapter(私有val上下文:上下文,私有val mData:List):
RecyclerView.Adapter(){
lateinit var mClickListener:ItemClickListener
var mInflater:LayoutInflater=LayoutInflater.from(上下文)
override onCreateViewHolder(父级:ViewGroup,viewType:Int):ViewHolder{
val view=mInflater.充气(R.layout.recyclerview_行,父级,false)
返回视图保持器(视图)
}
重写getItemCount():Int{
返回mData.size
}
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
val名称:String=mData[position]。名称
val last:String=mData[position]。last
holder.mName.text=名称
holder.mLast.text=last
}
趣味物品(id:Int):动物{
返回mData[id]
}
趣味设置ClickListener(itemClickListener:itemClickListener){
this.mClickListener=itemClickListener
}
接口项ClickListener{
单击(视图:视图,位置:Int)
}
类ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView),View.OnClickListener{
变量mName:TextView=itemView.findViewById(R.id.tvAnimalName)
var mLast:TextView=itemView.findViewById(R.id.tvAnimalLastName)
覆盖有趣的onClick(p0:视图?){
}
}
}
应该是

val data = mutableListOf<Animal>() 

    setContentView(R.layout.activity_main)
    data.add(Animal("First", "Second"))
    data.add(Animal("111", "222"))
    data.add(Animal("444", "333"))
   ... 
val data=mutableListOf()
setContentView(R.layout.activity_main)
添加数据(动物(“第一”、“第二”))
数据。添加(动物(“111”、“222”))
数据。添加(动物(“444”、“333”))
... 

更改填充列表的方式

val data : List<Animal> = listOf(
            Animal("First", "Second"),
            Animal("111", "222"),
            Animal("444", "333"),
            Animal("First", "Second"),
            Animal("111", "222"),
            Animal("444", "333"),
            Animal("First", "Second"),
            Animal("111", "222"),
            Animal("444", "333")
            )
val数据:List=listOf(
动物(“第一”、“第二”),
动物(“111”、“222”),
动物(“444”、“333”),
动物(“第一”、“第二”),
动物(“111”、“222”),
动物(“444”、“333”),
动物(“第一”、“第二”),
动物(“111”、“222”),
动物(“444”、“333”)
)
另请注意

  • 避免使用看起来像保留字的变量,例如使用AnimalHolder而不是ViewHolder
  • 填充viewholder中的视图,而不是适配器中的视图。我添加了一个函数绑定
  • MyRecycleriveWadapter
    package com.example.kotlin
    导入android.content.Context
    导入android.util.Log
    导入android.view.LayoutInflater
    导入android.view.view
    导入android.view.ViewGroup
    导入android.widget.TextView
    导入androidx.recyclerview.widget.recyclerview
    类MyRecycleServiceAdapter(私有val上下文:上下文,私有val动物:列表):
    RecyclerView.Adapter(){
    lateinit var mClickListener:ItemClickListener
    var mInflater:LayoutInflater=LayoutInflater.from(上下文)
    重写CreateViewHolder(父级:ViewGroup,viewType:Int):AnimalHolder{
    val view=mInflater.充气(R.layout.recyclerview_行,父级,false)
    返回动物支架(视图)
    }
    重写fun getItemCount()=animates.size
    覆盖BindViewHolder(holder:AnimalHolder,position:Int){
    固定器绑定(动物[位置])
    }
    趣味物品(id:Int):动物{
    返回动物[id]
    }
    趣味设置ClickListener(itemClickListener:itemClickListener){
    this.mClickListener=itemClickListener
    }
    接口项ClickListener{
    单击(视图:视图,位置:Int)
    }
    类AnimalHolder(itemView:View):RecyclerView.ViewHolder(itemView),View.OnClickListener{
    私人lateinit变种动物:动物
    val mName:TextView=itemView.findViewById(R.id.tvAnimalName)
    val mLast:TextView=itemView.findViewById(R.id.tvAnimalLastName)
    初始化{
    itemView.setOnClickListener(此)
    }
    趣味绑定(动物:动物){
    这个动物
    mName.text=this.animal.name
    mLast.text=this.animal.last
    Log.d(“0001”,“犯罪总数:${this.animal.last}”)
    }
    覆盖有趣的onClick(p0:视图?){
    }
    }
    }
    
    MainActivity.kt
    package com.example.kotlin
    导入androidx.appcompat.app.appcompat活动
    导入android.os.Bundle
    导入android.util
    
    package com.example.kotlin
    
    import android.content.Context
    import android.util.Log
    import android.view.LayoutInflater
    import android.view.View
    import android.view.ViewGroup
    import android.widget.TextView
    import androidx.recyclerview.widget.RecyclerView
    
     class MyRecyclerViewAdapter(private val context : Context, private val animals : List<Animal>) :
        RecyclerView.Adapter<MyRecyclerViewAdapter.AnimalHolder>() {
    
        lateinit var mClickListener: ItemClickListener
        var mInflater: LayoutInflater = LayoutInflater.from(context)
    
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AnimalHolder {
            val view = mInflater.inflate(R.layout.recyclerview_row, parent, false)
            return AnimalHolder(view)
        }
    
        override fun getItemCount()= animals.size
    
    
        override fun onBindViewHolder(holder: AnimalHolder, position: Int) {
            holder.bind(animals[position])
        }
    
        fun getItem(id: Int): Animal {
            return animals[id]
        }
    
        fun setOnClickListener(itemClickListener: ItemClickListener) {
            this.mClickListener = itemClickListener
        }
    
        interface ItemClickListener {
            fun onItemClick(view: View, position: Int)
        }
         class AnimalHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
            private lateinit var animal: Animal
            val mName: TextView = itemView.findViewById(R.id.tvAnimalName)
            val mLast: TextView = itemView.findViewById(R.id.tvAnimalLastName)
    
            init {
                itemView.setOnClickListener(this)
            }
    
            fun bind(animal: Animal) {
                this.animal = animal
                mName.text = this.animal.name
                mLast.text = this.animal.last
                Log.d("0001", "Total crimes: ${this.animal.last}")
            }
    
            override fun onClick(p0: View?) {
            }
        }
    
    }
    
    
    package com.example.kotlin
    
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.util.Log
    import android.view.Gravity
    import android.view.View
    import android.widget.Button
    import android.widget.EditText
    import android.widget.TextView
    import android.widget.Toast
    import androidx.lifecycle.ViewModelProvider
    import androidx.recyclerview.widget.LinearLayoutManager
    import androidx.recyclerview.widget.RecyclerView
    
    class MainActivity : AppCompatActivity(), MyRecyclerViewAdapter.ItemClickListener {
        lateinit var input: EditText
        lateinit var button : Button
        lateinit var recycler : RecyclerView
        lateinit var adapter: MyRecyclerViewAdapter
    
    
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val data : List<Animal> = listOf(
                Animal("First", "Second"),
                Animal("111", "222"),
                Animal("444", "333"),
                Animal("First", "Second"),
                Animal("111", "222"),
                Animal("444", "333"),
                Animal("First", "Second"),
                Animal("111", "222"),
                Animal("444", "333")
                )
            input = findViewById(R.id.edit)
            button = findViewById(R.id.button)
            recycler = findViewById(R.id.recycler)
            adapter = MyRecyclerViewAdapter(this, data)
    
            recycler.layoutManager = LinearLayoutManager(this)
            adapter.setOnClickListener(this)
            recycler.adapter = adapter
        }
    
        override fun onItemClick(view: View, position: Int) {
            TODO("Not yet implemented")
        }
    }