我可以毫无问题地将数据从活动发送到 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 内,但应用程序不获取数据。
我该怎么办?我已经尝试使用谷歌搜索解决方案,但大多数都是复杂代码的解决方案。我的实际应用程序也非常复杂,但我想有一个解决这个简单问题的示例解决方案,然后从那里开始工作。
编辑:对不起,我弄错了变量的命名。我现在更正了。
你可以这样做......
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)
这将为您提供类的抽象功能。
希望你明白这一点......
| 归档时间: |
|
| 查看次数: |
2479 次 |
| 最近记录: |