【问题标题】:Unable to reference sub class in Kotlin无法在 Kotlin 中引用子类
【发布时间】:2017-09-29 12:10:04
【问题描述】:

正如您在下面看到的,我无法为我的应用程序 BindItems 引用 CustomAdapter 中的内部类。我不确定为什么它显示为红色且未找到。

 class MyCustomAdapter(context: Context,val theList: ArrayList<MyInfo>): RecyclerView.Adapter<ViewHolder>(){

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

        override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
            holder.bindItems(theList[position])
        }

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
            val v = LayoutInflater.from(parent.context).inflate(R.layout.main_row, parent, false)
            return ViewHolder(v)
        }

        class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
              fun bindItems(user: MyInfo) {
                 val textViewName : TextView = itemView.findViewById<TextView>(R.id.row_town_name)
                 val textViewAddress : TextView  = itemView.findViewById<TextView>(R.id.row_zip_code)
                 textViewName.text = user.townname
                 textViewAddress.text = user.zipcode
             }
         }       
    }

解决方案:

 class MyCustomAdapter(context: Context,val theList: ArrayList<MyInfo>): RecyclerView.Adapter<MyCustomAdapter.MyViewHolder>(){


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


         override fun onBindViewHolder(holder: MyCustomAdapter.MyViewHolder, position: Int) {
            holder.bindItems(theList[position])
        }

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyCustomAdapter.MyViewHolder {
            val v = LayoutInflater.from(parent.context).inflate(R.layout.main_row, parent, false)
            return MyViewHolder(v)
        }

        class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
              fun bindItems(user: MyInfo) {
                 val textViewName : TextView = itemView.findViewById<TextView>(R.id.row_town_name)
                 val textViewAddress : TextView  = itemView.findViewById<TextView>(R.id.row_zip_code)
                 textViewName.text = user.townname
                 textViewAddress.text = user.zipcode
             }
         }


    }

谢谢 -R

【问题讨论】:

  • 邮政编码,不是图片。这不是 Kotlin 的问题。
  • 查看我的更新答案。

标签: java android class kotlin


【解决方案1】:

如下更改您的 onBindViewHolder 方法并更改您的 ViewHolder 的名称:

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

【讨论】:

  • 这会产生.... 错误:(101, 5) 类 'MyCustomAdapter' 不是抽象的,也没有实现抽象基类成员 public abstract fun onBindViewHolder(p0: RecyclerView.ViewHolder!, p1: int): android.support.v7.widget.RecyclerView.Adapter中定义的单位
  • 你不能给 ViewHolder 命名 ViewHolder 以及
  • 为您的 viewHolder 提供另一个名称
猜你喜欢
  • 2018-01-21
  • 2015-04-23
  • 2019-12-04
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
相关资源
最近更新 更多