Issue
I am new to Kotlin development in android. here I am trying to access a variable defined in a class from it's inner class as below.
class MainActivity : AppCompatActivity() {
var frags: MutableList<Fragment> = mutableListOf()
//.............onCreate and other methods ....
internal class CustAdapter(var arrayList: ArrayList<NavigationData>) : RecyclerView.Adapter<CustAdapter.MyViewHolder>() {
override fun onBindViewHolder(holder: MyViewHolder?, position: Int) {
holder!!.bindItems(arrayList[position])
}
override fun getItemCount(): Int {
return arrayList.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustAdapter.MyViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.navigation_item, parent, false)
return MyViewHolder(v)
}
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bindItems(data: NavigationData) {
itemView.setOnClickListener {
frags.add(BoardFrag()) ///// here i'm getting error "unresolved symbol"
}
}
}
}
}
inside inner class MyViewHolder
it is not allowing me to access any variable of outer scope.
even I'm unable to access view ids imported from
import kotlinx.android.synthetic.main.activity_main.*
inside inner class methods.
I was able to access variables in such a way in java
but i have read many question on stackoverflow but i didn't get answer yet.
Solution
You should use the inner modifier in your adapter.
This modifier makes the inner class have access to the members of the outer class
Reference: https://kotlinlang.org/docs/reference/nested-classes.html
Answered By - Leandro Borges Ferreira
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.