Java 将片段作为参数传递给RecyclerView.Adapter是一种不好的做法吗?帮助onClick
我正在研究实现onClick for recycler视图的最佳方法,有很多好方法可以做到这一点,但是传递片段并引用片段中的函数是一个不错的解决方案吗? 第一次在这里问问题,请原谅格式不好 片段:Java 将片段作为参数传递给RecyclerView.Adapter是一种不好的做法吗?帮助onClick,java,android,kotlin,Java,Android,Kotlin,我正在研究实现onClick for recycler视图的最佳方法,有很多好方法可以做到这一点,但是传递片段并引用片段中的函数是一个不错的解决方案吗? 第一次在这里问问题,请原谅格式不好 片段: class MyFragment: BaseFragment() { private val selectedList = ArrayList<Object>() ...... rvTempListView.adapter = MyAdapter(
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)
}
}
}
classmyfragment:BaseFragment(){
private val selectedList=ArrayList()
......
rvTempListView.adapter=MyAdapter(
临时分组列表,
这
)
.......
已选择趣味项目(对象:对象){
if(selectedList中的对象){
selectedList.remove(对象)
}否则{
selectedList.add(对象)
}
}
}
RecyclerView.适配器:
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
}
}
}
.......
}
类MyAdapter(val uniqueObjects:MutableList,
val myFragment:myFragment)
:RecyclerView.Adapter(){
val TAG=javaClass.simpleName
.......
cardView.setOnClickListener{
mFragment.itemSelected(唯一对象[位置]){
如果(切换){
ivChecked.visibility=View.VISIBLE
toggle=!toggle
}否则{
ivChecked.visibility=View.INVISIBLE
toggle=!toggle
}
}
}
.......
}
上面的解决方案效果很好,只是想知道这是否是一个糟糕的做法?
谢谢 不,这样做没有问题。适配器的生命周期与片段的生命周期相关联,因此这样做不会有内存泄漏或类似的风险 您可能希望通过一个只定义该方法的接口来实现这一点,以便出于关注点分离的原因在两者之间强制实施API,但这也很好