2017-04-27 8 views
1

MVVMパターンのAndroidアプリを構築しようとしています。
私はDeveloper's Guide to Microsoft Prism Library 5.0 for WPFを読んでMVVMについて知りました。 ViewModelはプロパティとコマンドを実装しているため、データバインディングコマンドを使用して相互にやりとりすることができます。 MVVMについてのほとんどのブログにはCommandが書いてありますが、Commandの実装はありません。それらは、アンドロイドのmvvmパターンでCommandを実装するのに必要なものです

<Button 
    ... 
    app:onClick="@{mvvm.onClick}"/> 

public class ViewModel { 
    public void onClick(View view){ 
    } 
} 

それらの権利である別の

<Button 
    ... 
    app:onClick="@{view.onClick}"/> 

public class MyActivity extends Activity { 
    public void onClick(View view){ 
     viewModel.onClick(); 
    } 
} 

public class ViewModel { 
    public void onClick(){ 
    } 
} 

の2種類があります
?どちらも間違っている場合、MVVMのパターンをアンドロイド用に実装する方法は?

答えて

0

MVVMを使用して、いくつかのアンドロイドプロジェクトを実装しました。ほとんどのオンラインリソースは最初のアプローチを使用することを提案しているので、layout.xmlはviewModelへの参照を保持します。しかし、私は早くそのような実装でいくつかの課題に直面しました。

MVVMでは、viewはviewModelへの参照を保持しますが、viewModelはビューへの参照を保持しないため、疎結合であり、簡単にテストできます。私のonclickボタンが行を挿入してアニメーションを実行する必要があるとしましょう。ここで問題となるのは、viewModelにはレイアウトリソースへの参照がないため、レイアウト関連の機能を実行できません。

この状況を解決するために、私はlayout.xmlがviewModelへの参照を保持しているビューとビューへの参照を保持するという2番目のアプローチに変更しました。 view.onClickイベントでは、まずレイアウト関連のコーディングを行い、viewModel.onClickを呼び出してコアロジックを実行したり、必要に応じてモデルに接続したりします。

layout.xml - >ビュー - > ViewModelに - 私の意見で>モデル

、この質問には正しいか間違ってはありません。あなたの状況や個人的な好みに基づいています。

関連する問題