让我们假设我们有一个包含RecyclerView的Activity/Fragment。此外,它还设置了一个适配器。为了示例起见,假设Adapter必须访问Fragment,才能调用显示Snackbar的方法。此外,假设适配器中有几个项目。我想删除一个并将其从数据库中删除。因此,我应该调用ViewModel的方法。我做了一项研究,但我找不到任何信息,如果将片段引用到适配器中是好是坏。
你能帮我解释一下吗?对于ViewModel,我也在这里找到了一些想法。
但最佳实践是什么?
- 好的适配器类应该是STATIC,帮助开发人员将其与Activity/Fragment部分分离
- 不要在Adapters中保存Activity/Fragment引用
- ViewModels应属于Activities或Fragments
- 适配器应通过回调/监听器或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();
}
});
}
}