https://www.littlerobots.nl/blog/Handle-Android-RecyclerView-Clicks/
private ItemClickSupport(RecyclerView recyclerView) {
mRecyclerView = recyclerView;
mRecyclerView.setTag(R.id.item_click_support, this);
mRecyclerView.addOnChildAttachStateChangeListener(mAttachListener);
}
public static ItemClickSupport addTo(RecyclerView view) {
ItemClickSupport support = (ItemClickSupport)
view.getTag(R.id.item_click_support);
if (support == null) {
support = new ItemClickSupport(view);
}
return support;
}
我很高兴找到支持RecyclerView Click的源代码,并且可以正常工作。
但是我不知道为什么将构造函数定义为单例。
与同一类中的另一个RecyclerView
创建新的RecyclerViewAdapter的原因相同吗?
我读到一条评论,由于单一责任原则,不建议将其用作各种RecyclerView
的适配器。
感谢答案!
答案 0 :(得分:0)
那不是单身汉。
简单来说,“单例”是仅限于单个实例的类。该类的第二个实例是不可能的,这就是为什么Singletons具有通用名称的static
getInstance()
方法的原因。
但是,您要询问的课程ItemClickSupport
是不同的。与Singleton不同,它可以具有许多实例。 addTo()
方法只是确保每个RecyclerView
都拥有ItemClickSupport
的一个实例。
但是,这并不能使它成为Singleton,因为只要将另一个RecyclerView
传递到ItemClickSupport#addTo()
中,就会有ItemClickSupport
的另一个实例。