, почему я не могу получить доступ к теневой переменной в методе inTestOne () с ключевым словом this это в строке 8
blockquote>Поскольку
x
является не переменная-член класса; это локальная переменная . Ключевое словоthis
можно использовать для доступа к полям членов класса, а не локальным переменным.Как только переменная затенена, у вас нет доступа к ней. Это нормально, потому что переменная и локальный внутренний класс являются вашими изменениями; если вы хотите получить доступ к теневой переменной, все, что вам нужно сделать, это переименовать ее (или переименовать переменную, которая ее тень, что имеет для вас больше смысла).
Примечание. Не забудьте отметить локальная переменная
final
, иначе вы не сможете получить доступ к ней, даже если она не затенена.
lateinit var mClickListener: ClickListener
fun setOnItemClickListener(aClickListener: ClickListener) {
mClickListener = aClickListener
}
interface ClickListener {
fun onClick(pos: Int, aView: View)
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
override fun onClick(v: View) {
mClickListener.onClick(adapterPosition, v)
}
val tvTitle = itemView.findViewById<TextView>(R.id.tv_cat_title)
init {
itemView.setOnClickListener(this)
}
}
и в своей деятельности просто внедрите прослушиватель щелчков
adapter.setOnItemClickListener(object : Adapter.ClickListener {
override fun onClick(pos: Int, aView: View) {
}
})