将上下文类型转换为活动以用于回收视图和片段?(科特林)

Dud*_*rem 0 fragment kotlin

我可以毫无问题地将数据从活动发送到 recyclerview 适配器文件。

将上下文类型转换为 Activity

例如,我可以输入

var x:Int = 9000

在 MainActivity 文件中,然后我转到 RecyclerAdapter 并简单地键入

var y:Int = MainActivity().x

让 RecyclerAdapter 获取它并使用它来执行其操作。

我实际上不能这样做,将数据从 RecyclerAdapter() 传输到 MainActivity()。我试过

var x:Int= 9000

在 RecyclerAdapter() 中,然后

var y:Int= RecyclerAdapter().x

在 MainActivity 内,但应用程序不获取数据。

我该怎么办?我已经尝试使用谷歌搜索解决方案,但大多数都是复杂代码的解决方案。我的实际应用程序也非常复杂,但我想有一个解决这个简单问题的示例解决方案,然后从那里开始工作。

编辑:对不起,我弄错了变量的命名。我现在更正了。

sus*_*dlh 6

你可以这样做......

 val activity = context as ExampleActivity
 var i=activity.getCount()
Run Code Online (Sandbox Code Playgroud)

在你的活动课上。

class ExampleActivity: AppCompatActivity() {


    private var count = 0

     override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_example)
        var mList = findViewById(R.id.list) as RecyclerView
        var mAdapter = CustomAdapter(this);
        mList.layoutManager = LinearLayoutManager(this)
        mList.adapter = mAdapter
      }

    fun setCount(i: Int) {
        count = i
    }

    fun getCount(): Int {
        return count
    }
}
Run Code Online (Sandbox Code Playgroud)

在您的 AdapterClass 中。

class CustomAdapter(var context:Context) : RecyclerView.Adapter<CustomHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomHolder {
        return CustomHolder(LayoutInflater.from(context).inflate(R.layout.cell,parent,false))
    }

    override fun getItemCount(): Int {
        return 10;
    }

    override fun onBindViewHolder(holder: CustomHolder, position: Int) {

        val activity = context as ExampleActivity
        var i=activity.getCount()
         i+=20
        activity.setCount(i)
    }


}

class CustomHolder(val item: View) : RecyclerView.ViewHolder(item) {

}
Run Code Online (Sandbox Code Playgroud)

这将为您提供类的抽象功能

希望你明白这一点......