适配器中的活动/片段和ViewModel良好实践



让我们假设我们有一个包含RecyclerView的Activity/Fragment。此外,它还设置了一个适配器。为了示例起见,假设Adapter必须访问Fragment,才能调用显示Snackbar的方法。此外,假设适配器中有几个项目。我想删除一个并将其从数据库中删除。因此,我应该调用ViewModel的方法。我做了一项研究,但我找不到任何信息,如果将片段引用到适配器中是好是坏。

你能帮我解释一下吗?对于ViewModel,我也在这里找到了一些想法。

但最佳实践是什么?

  1. 好的适配器类应该是STATIC,帮助开发人员将其与Activity/Fragment部分分离
  2. 不要在Adapters中保存Activity/Fragment引用
  3. ViewModels应属于Activities或Fragments
  4. 适配器应通过回调/监听器或LiveData执行Activity/Fragment的操作

伪代码:

public class MainActivity extends Activity {

private interface Listener {
void OnRemoved(@NonNull xxx removedItem);
}

private static final class MyAdapter extends ArrayAdapter<xxx> {
private final Listener mListener;
private MyAdapter(@NonNull final Listener listener) {
super(...);
this.mListener = listener;
}
@Override
public void remove(xxx item) {
super.remove(xxx); //<-- this removes item from Adapter
this.mListener.OnRemoved(item); //<-- this triggers Activity's code
}
}

public void onCreate(...) {
...
new MyAdapter(new Listener() {
@Override
public void OnRemoved(@NonNull final xxx removedItem) {
Snakbar.makeText(....).show();
}
});
}
}

最新更新