Android 回收视图不显示项目。在Java中,在Kotlin中效果很好,而不是
我试图遵循与Java相同的实现方式。但由于某些原因,它不起作用。调试器显示程序甚至不进入适配器内部 活动代码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
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”)
)
另请注意
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")
}
}