我目前主要进行WPF开发,并开始创建一些基本的Android应用程序。在创建WPF应用时,我经常使用MVVM,通常使用Prism,想知道是否有任何适用于Android平台的MVVM示例?
我目前主要进行WPF开发,并开始创建一些基本的Android应用程序。在创建WPF应用时,我经常使用MVVM,通常使用Prism,想知道是否有任何适用于Android平台的MVVM示例?
https://github.com/MindorksOpenSource/android-mvvm-architecture
Android MVVM 架构:示例应用
该代码库包含一个详细的示例应用程序,使用 Dagger2、Room、RxJava、FastAndroidNetworking、PlaceHolderView 和 AndroidDebugDatabase 实现了 MVVM 架构。
该应用程序具有以下包:
data: It contains all the data accessing and manipulating components.
di: Dependency providing classes using Dagger2.
ui: View classes along with their corresponding ViewModel.
utils: Utility classes.
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data class=".UserBinding">
<variable name="user" type="com.darxstudios.databind.example.User"/>
</data>
<RelativeLayout
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivityFragment"
>
<TextView android:text='@{user.firstName+" "+user.lastName}' android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_below="@+id/textView"
android:layout_toEndOf="@+id/textView"
android:layout_marginStart="40dp"
android:layout_marginTop="160dp" />
</RelativeLayout>
</layout>
public class MainActivityFragment extends Fragment {
public MainActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final User user = new User();
user.setFirstName("Michael");
user.setLastName("Cameron");
UserBinding binding = DataBindingUtil.inflate(inflater,R.layout.fragment_main, container, false);
binding.setUser(user);
View view = binding.getRoot();
final Button button = (Button) view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
user.setFirstName("@Darx");
user.setLastName("Val");
}
});
return view;
}
}
Github上有很多MVVM框架的例子。我建议使用DroidWizard。
DroidWizard在视图和视图模型之间进行自己的耦合,而且该框架与MVVM略有不同。
ModelEngine ViewModel View代替了Model ViewModel View。