使用spring的Android MVVM架构正确吗?

时间:2018-11-12 10:06:44

标签: android mvvm android-livedata

我想知道我是否为我的Android应用使用了正确的体系结构,所以我想验证一下。 我做了很多阅读和教程,这些都是我在Google上找到的,并将这些知识组合到以下架构中:

此设置的基础是Android Studio中的主/详细信息流程模板。

查看

该视图是一个名为OrderListActivity的活动,其中包含OrderListItemRecyclerViewAdapter,它使用的是OrderListItemViewHolder

该视图包含类型为OrderViewModel的变量。

我的onCreate函数调用setupOrderItemListener(),其中包含以下代码:

private void setupOrderItemListener() {
    orderViewModel = ViewModelProviders.of(this).get(OrderViewModel.class);
    orderViewModel.init();
    orderViewModel.getOrderListItems().observe(this, this::onOrderListChanged);
    orderViewModel.initiateOrderListFetch();
}

onOrderListChanged:

public void onOrderListChanged(List<OrderListItem> orderListItems) {
    mAdapter.dataset = orderListItems;
    mAdapter.notifyDataSetChanged();
}

我之前提到的mAdapter变量的类型为OrderListItemRecyclerViewAdapter

ViewModel

在ViewModel中,我有一个函数:

LiveData<List<OrderListItem>> getOrderListItems() {
    return model.orderListItems;
}

和这个:

void initiateOrderListFetch() {
    model.fetchOrderList();
}

模型

在我的OrderModel中,我有以下变量:

MutableLiveData<List<OrderListItem>> orderListItems = new MutableLiveData<>();

从ViewModel调用的函数fetchOrderList()如下:

void fetchOrderList() {
    new FetchOrderListTask(this).execute();
}

此任务正在使用spring android rest模板执行对服务器的HTTP请求。 (org.springframework.android:spring-android-rest-template) 任务完成后,它将调用执行的委托函数orderListTaskResponseFinished

orderListItems.setValue(response);

会在getOrderListItems中启动函数ViewModel

此后,将调用Activity中的绑定并更新视图。


我的问题: 我是否正确设置了架构?从模型调用网络任务的方法是一个不错的选择吗? 有人对改进有其他建议吗?

其他问题: 我可以为以后的DetailActivity使用相同的ViewModel和Model吗? 谢谢!

0 个答案:

没有答案