Android lateinit属性ABC尚未初始化

Android lateinit属性ABC尚未初始化,android,android-studio,android-layout,kotlin,android-context,Android,Android Studio,Android Layout,Kotlin,Android Context,单击我在recyclerView中实现的按钮属于activity_main.xml(MainActivity类),其工作是切换活动(MainActivity->EmployeeActivity),它显示了下面的一个问题。我将非常感谢每一个提示 错误: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.ing, PID: 31027 kotlin.UninitializedPropertyAccessExcep

单击我在recyclerView中实现的按钮属于activity_main.xml(MainActivity类),其工作是切换活动(MainActivity->EmployeeActivity),它显示了下面的一个问题。我将非常感谢每一个提示

错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ing, PID: 31027
    kotlin.UninitializedPropertyAccessException: lateinit property context has not been initialized
        at com.example.ing.adapter.MyAdapter.getContext(MyAdapter.kt:20)
        at com.example.ing.adapter.MyAdapter$onBindViewHolder$1.onClick(MyAdapter.kt:37)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
class MyAdapter :RecyclerView.Adapter<MyAdapter.MyViewHolder>(){

    lateinit var context:Context

    private var myList = emptyList<Data>()
    inner class MyViewHolder(itemView: View):RecyclerView.ViewHolder(itemView)


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_employee_item, parent, false))
    }

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

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.itemView.tvEmployeeName.text = myList[position].employeeName
        holder.itemView.showButton.setOnClickListener{
            val intent = Intent(context.applicationContext,EmployeeActivity::class.java)
            intent.putExtra("id", position)
            context.startActivity(intent)

        }
    }

    fun setData(newList:List<Data>){
        myList = newList
        notifyDataSetChanged()
    }
}
MyAdapter类:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ing, PID: 31027
    kotlin.UninitializedPropertyAccessException: lateinit property context has not been initialized
        at com.example.ing.adapter.MyAdapter.getContext(MyAdapter.kt:20)
        at com.example.ing.adapter.MyAdapter$onBindViewHolder$1.onClick(MyAdapter.kt:37)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
class MyAdapter :RecyclerView.Adapter<MyAdapter.MyViewHolder>(){

    lateinit var context:Context

    private var myList = emptyList<Data>()
    inner class MyViewHolder(itemView: View):RecyclerView.ViewHolder(itemView)


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_employee_item, parent, false))
    }

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

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.itemView.tvEmployeeName.text = myList[position].employeeName
        holder.itemView.showButton.setOnClickListener{
            val intent = Intent(context.applicationContext,EmployeeActivity::class.java)
            intent.putExtra("id", position)
            context.startActivity(intent)

        }
    }

    fun setData(newList:List<Data>){
        myList = newList
        notifyDataSetChanged()
    }
}
classmyadapter:RecyclerView.Adapter(){
lateinit变量上下文:上下文
private var myList=emptyList()
内部类MyViewHolder(itemView:View):RecyclerView.ViewHolder(itemView)
重写CreateViewHolder(父级:ViewGroup,viewType:Int):MyViewHolder{
返回MyViewHolder(LayoutFlater.from(parent.context)。充气(R.layout.layout\u employee\u item,parent,false))
}
重写getItemCount():Int{
返回myList.size
}
覆盖onBindViewHolder(holder:MyViewHolder,位置:Int){
holder.itemView.tvEmployeeName.text=myList[position].employeeName
holder.itemView.showButton.setOnClickListener{
val intent=intent(context.applicationContext,EmployeeActivity::class.java)
意图。额外(“id”,位置)
上下文。起始触觉(意图)
}
}
fun setData(newList:List){
myList=newList
notifyDataSetChanged()
}
}

您声明了
lateinit var context:context
变量,但尚未为其分配任何上下文值。您应该先分配一个值,然后再使用它。

您声明了
lateinit var context:context
变量,但尚未为其分配任何上下文值。您应该先分配一个值,然后再使用它。

您的变量
上下文
从未初始化过。。。您应该将其传递到构造函数中,而不是将其声明为
lateinit var
,例如:
class MyAdapter(private val context:context):RecyclerView.Adapter()
您的变量
context
从未初始化过。。。您应该将其传递到构造函数中,而不是将其声明为
lateinit var
,例如:
class MyAdapter(private val context:context):RecyclerView.Adapter()