Iro*_*ack 20 android class kotlin
我是Android中Kotlin开发的新手.在这里,我试图从它的内部类中访问类中定义的变量,如下所示.
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"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在内部类中,MyViewHolder它不允许我访问外部范围的任何变量.
即使我无法访问从
import kotlinx.android.synthetic.main.activity_main.*内部类方法内部导入的视图ID .
我能够以这种方式访问变量,java但我已经在stackoverflow上读了很多问题,但我还没有得到答案.
Lea*_*ira 31
您应该在适配器中使用内部修饰符.
此修饰符使内部类可以访问外部类的成员
参考:https://kotlinlang.org/docs/reference/nested-classes.html
Viv*_*ngh 13
将嵌套类定义为inner,然后您将能够访问外部类成员变量
class OuterClass{
var accessMe ="access me from Inner Class"
inner class InnerClass{
//....
fun accessingOuterClassVariable(){
accessMe = "Now the variable is accessed"
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
要以一种简单的方式快速回答这个问题,我会执行以下操作:
class OuterClass{
private var accessibleInside: CustomObject? = null
inner class InnerClass{
//....
}
Run Code Online (Sandbox Code Playgroud)
现在CustomObject可以从任何Context以String希望这可以帮助别人。
| 归档时间: |
|
| 查看次数: |
5869 次 |
| 最近记录: |