[英]What is the best way to access members of outer class in the inner class of RecyclerView adapter in Kotlin?
I'm creating my first Kotlin classes in my Android application. 我正在Android应用程序中创建第一个Kotlin类。 Usually, for logging purposes, I have a constant with the name TAG. 通常,出于记录目的,我有一个名称为TAG的常量。 I defined it in my RecyclerView Adapter as: 我在RecyclerView适配器中将其定义为:
class MyAdapter(private val dataList: ArrayList<MyData>): RecyclerView.Adapter<MyAdapter.ViewHolder>() {
private val TAG: String? = MyAdapter::class.simpleName
.
.
.
class ViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {
fun bindData(){
//some statements
}
override fun onClick(p0: View?) {
//I want to use the above defined TAG here as I would do in Java:
// Log.d(TAG, "");
}
}
}
I am unable to access the variable TAG in the onClick() 我无法在onClick()中访问变量TAG
您可以将ViewHolder类设置为inner
Use the companion object
: 使用companion object
:
class MyAdapter(private val dataList: ArrayList<String>) :
RecyclerView.Adapter<MyAdapter.ViewHolder>() {
class ViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {
fun bindData() {
//some statements
}
override fun onClick(p0: View?) {
Log.d(TAG, "")
}
}
companion object {
val TAG: String? = MyAdapter::class.simpleName
}
}
You can also put 你也可以放
private val TAG: String? = MyAdapter::class.simpleName
on top level of the file. 在文件的顶层。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.