在我的应用程序中,我在屏幕上拖动一个 customView 并根据手指的位置更新其他视图的某些排列。我的 Logcat 中不断出现此错误。拖动进行几秒钟后,父视图变暗并且不会更新。我也一直看到这个错误:
E/InputDispatcher: Window handle drag has no registered input channel
Run Code Online (Sandbox Code Playgroud)
但该应用程序确实有响应 - 并非完全没有响应。关于如何解决它的任何想法?抱歉,我无法共享代码,因为它是巨大模块的一部分,并且很难在此处显示它。
问题:我可以在不使用数据绑定的情况下使用MVVM实现Android应用程序.
我试图解决的问题非常简单:从后端API读取项目列表并在Recylerview中显示它们.
我是如何实施的:
在视图中 - 我有Activity和RecyclerViewAdapter模型:ApiResponse和数据模型网络 - 改造API服务,RxJava2
对于ViewModel部分 - 我有一个ViewModel类(它不是从任何东西派生的)基本上调用Retrofit Service并使用RxJava调用获取数据.
ViewModel有如下调用:
void getItems();
void addItemData();
void removeItem();
Run Code Online (Sandbox Code Playgroud)
用RXJava2调用服务
ObServable<ApiResponse> getItems();
ObServable<ApiResponse> addItemData();
ObServable<ApiResponse> removeItem();
Run Code Online (Sandbox Code Playgroud)
View实例化ViewModel对象.ViewModel在创建期间获取Adapter对象的实例.在视图中,单击按钮会调用Activity中的ClickHandler,该ClickHandler调用ViewModel#getItems()方法.由于ViewModel具有到Adapter的链接,因此viewModel会更新适配器中的项目,以便自动更新RecyclerView.
我不确定这是否适合MVVM.
数据绑定对我来说有点像意大利面.
同样,我们可以在没有DataBinding的情况下在android中实现MVVM吗?方法好吗?