gpt4 book ai didi

java - 将 fragment 作为参数传递给 RecyclerView.Adapter 是一种不好的做法吗?帮助点击

转载 作者:行者123 更新时间:2023-12-01 18:31:27 27 4
gpt4 key购买 nike

我正在研究为回收器 View 实现 onClick 的最佳方法,有很好的方法可以做到这一点,但是传递 fragment 并引用 fragment 中的函数是一个不错的解决方案吗?第一次在这里提问,格式不好请见谅。

fragment :

class MyFragment: BaseFragment() {

private val selectedList = ArrayList<Object>()

......
rvTempListView.adapter = MyAdapter(
tempGroupedList,
this
)
.......

fun itemSelected(object: Object) {
if (object in selectedList){
selectedList.remove(object)
} else {
selectedList.add(object)
}
}
}

RecyclerView.Adapter:

class MyAdapter(val uniqueObjects: MutableList<Object>,
val myFragment: MyFragment)
: RecyclerView.Adapter<MyAdapter.ViewHolder>() {
val TAG = javaClass.simpleName

.......
cardView.setOnClickListener {
mFragment.itemSelected(uniqueObjects[position]) {
if (toggle){
ivChecked.visibility = View.VISIBLE
toggle = !toggle
} else {
ivChecked.visibility = View.INVISIBLE
toggle = !toggle
}
}
}
.......

}

上述解决方案效果很好,只是想知道它是否是不好的做法?谢谢!

最佳答案

不,这样做没有问题。您的适配器的生命周期与 fragment 的生命周期相关联,因此您这样做不会面临任何内存泄漏或类似情况的风险。

您可能希望通过仅定义该方法的接口(interface)来执行此操作,以便出于关注点分离的原因在两者之间强制执行 API,但这也很好。

关于java - 将 fragment 作为参数传递给 RecyclerView.Adapter 是一种不好的做法吗?帮助点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160873/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com