所以我有一个包含两个片段、一个存储库和一个ViewModel类的活动,因为我遵循Android开发人员的指南来使用MVVM结构。到目前为止,它似乎是有效的,但我不确定在实现方面是否遵循了良好的实践。到目前为止,它看起来是这样的:
存储库类:
public class MyRepository{
...
private MutableLiveData<ArrayList<Book>> bookList;
public MyRepository(){
bookList= new MutableLiveData<>();
getBookList(); //method that uses retrofit to fill bookList, since it's empty at this point
}
...
}
ViewModel类:
public class BookViewModel extends ViewModel {
private MyRepository repository;
private LiveData<ArrayList<Book>> bookList;
public void init(){
repository = new MyRepository();
bookList = repository.getBookList();
};
public LiveData<ArrayList<Book>> getBookList() {
if (bookList== null) {
bookList= new MutableLiveData<>();
}
return bookList;
}
显示图书列表的回收器视图:
public class MyRecyclerView extends RecyclerView.Adapter<MyRecyclerView.MyViewHolder> {
Context context;
ArrayList<Book> bookList;
public MyRecyclerView(Context context) {
context = context;
bookList = new ArrayList<>();
}
public void setList(ArrayList<Book> list){
bookList= list;
notifyDataSetChanged();
}
...
}
片段1
public class Fragment1 extends Fragment {
....
@Nullable
@Override
public View onCreateView(...) {
....
recyclerview_adapter = new AdapterRecyclerView(Context);
myRecyclerView = (RecyclerView)view.findViewById(R.id.recycler_view);
myRecyclerView.setLayoutManager(new LinearLayoutManager((getActivity())));
myRecyclerView.setAdapter(recyclerview_adapter);
viewModel.getbookList().observe(getViewLifecycleOwner(), new Observer<ArrayList<Producto>>() {
@Override
public void onChanged(ArrayList<Producto> books) {
recyclerview_adapter.setList(viewModel.getbookList().getValue());
}
});
return view;
}
...
}
问题:
1) 我用对了吗?我应该在onActivityCreated()或其他地方使用viewModel对象来防止任何错误吗?
2)我应该在每个片段中使用viewModel的实例,还是应该在包含它们的活动中使用它,然后通过参数将其传递给每个片段?
3)第一次调用init()
(获取数据库中所有书籍的方法)的正确位置在哪里,这样用户在打开app时就看到了存储在数据库中的书单?
4) ArrayList
原因-
原因-
原因-
原因-
问题内容: 我能够使用三个链接来组合一个简化的完整History.js示例,以从整个页面加载内容片段,而无需更新页面和更新浏览器历史记录。 这是相关的代码段- 完整的工作示例在此处http://jsfiddle.net/PT7qx/show 我想知道这是否正确。以前的版本可以使用#url绑定到事件。我没有看到使用此最新版本将事件绑定到url的任何示例,因此我使用了.on()click事件来调用Hi
在我的应用程序中,我使用ViewModels为视图提供数据,数据存储库为viewmodel提供数据,并处理与数据源(如数据库、internet API和首选项)的通信。 现在android使用特殊的片段来处理设置。这些特殊片段通过直接写入SharedPreferences来处理设置数据。因此它们不符合MVVM体系结构。我还从API中读取数据,从中提取一些初始设置数据并将其保存在自己的Prefere
我想尝试将以下两种方法合二为一: 第一个方法构造一个映射,其中键是<code>String</code>,值是<code<ArrayList</code>。 我想尝试添加第二条信息,即简单的错误消息(方法2)。HashMap不够复杂,无法保存这些信息,但我喜欢它只接受唯一值的方式,而且很容易迭代和传递。 任何建议非常感谢:)
本文向大家介绍javascript的replace方法结合正则使用实例总结,包括了javascript的replace方法结合正则使用实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了javascript的replace方法结合正则使用方法。分享给大家供大家参考,具体如下: replace()方法用于在字符串中用一些字符替换另一些字符,或者替换一个正则表达式匹配的字符串 例子一:直接
问题内容: 我一直在用 转换: 到: 我可以使用PIVOT语句接近此输出,但是我不确定如何获取TOTAL行/列? 给出: 我猜我需要将ROLLUP放入某个子查询中的某个地方…? 问题答案: 您没有发布表架构,所以我尝试推断它。我从您提供的输入开始(请参阅最里面的注释),因此您应该能够将其调整为实际的模式。我增加了一位没有任何文档的作者,因为我认为您希望在最终报告的输出中看到那些作者。排除那些作者是
问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有