【发布时间】:2016-05-05 17:07:10
【问题描述】:
我想知道哪种方式最好将适配器从一个活动传递到另一个活动。 这是我的观点;我使用领域作为 ContentProvider 和一个 recyclerview 来显示一些数据。我的 realResults 变量有一个带有以下 onChange() 的 changelistener:
public void onChange() {
adapter.notifyDataSetChanged();
...
所以任何时候我的数据更改 onChange() 都会被调用,并且我的 recyclerview 会得到更新,这非常酷。 在我打电话的另一项活动中
adater.notifyItemRemoved();
不幸的是,这个电话紧随其后
adapter.notifyDataSetChanged();
这样被移除项目的动画是不可见的。 为了使动画对用户可见,我想避免在 onChange() 中调用notifyDataSetChanged,如上所述。 为此,我想使用某种方法的辅助类,例如
public static Adapter getAdapter();
使用返回的适配器,我会根据情况调用 notifyDataSetChanged() 或 notifyItemRemoved()。
我的问题是想知道拥有这样一个帮助类(如上所述)是一个好主意,还是有更好的方法将适配器从一个活动传递到另一个活动?
谢谢
【问题讨论】:
-
我认为传递适配器或使用静态 getter 从另一个活动访问适配器不是一个好主意。你可以这样做,但是它把太多的东西耦合在一起,这违背了 Android 的设计理念。在 Realm 的细粒度通知 github.com/realm/realm-java/issues/989 之后,您的用例将得到很好的支持。目前,一个想法是您可以维护自己的
RealmObject列表,并在onChange() 中检查对象是否被RealmObject.isValid删除。显然,如果您的列表很长,这将不是优化的方式,因为它必须遍历列表。
标签: android android-recyclerview adapter realm