将上下文转换为活动以便在回收视图中使用? (科特琳)

时间:2018-07-21 04:43:00

标签: kotlin fragment

我可以将活动中的数据发送到recyclerview适配器文件,而不会出现任何问题。

  

将上下文转换为活动

例如,我可以输入

  

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内部,但应用程序未获取数据。

我该怎么办?我已经尝试使用谷歌搜索解决方案,但是大多数都是复杂代码的解决方案。我的实际应用程序也相当复杂,但是我想为这个简单的问题提供一个示例解决方案,然后从此继续前进。

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

2 个答案:

答案 0 :(得分:1)

您可以这样做。...

 val activity = context as ExampleActivity
 var i=activity.getCount()
  

在您的活动班级中。

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
    }
}
  

在您的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) {

}

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

希望您对此有所了解....

答案 1 :(得分:0)

没关系。我有一个解决方法。张贴在这里给想要答案的人。

创建一个对象kotlin文件,然后将数据从回收站适配器文件传递到对象,然后从对象传递到MainActivity

示例:在回收站适配器文件中: Object.x = x

然后在MainActivity()中: x = Object.x