我可以将活动中的数据发送到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内部,但应用程序未获取数据。
我该怎么办?我已经尝试使用谷歌搜索解决方案,但是大多数都是复杂代码的解决方案。我的实际应用程序也相当复杂,但是我想为这个简单的问题提供一个示例解决方案,然后从此继续前进。
编辑:对不起,我弄错了变量的命名。我现在纠正了。
答案 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