web-dev-qa-db-fra.com

Android MVVM Design Pattern Exemples

Je fais actuellement beaucoup de développement WPF et j'ai commencé à créer des applications de base Android. Lors de la création d'applications WPF, j'utilise souvent MVVM, normalement en utilisant Prism, et j'aimerais savoir s'il existe des exemples de MVVM pour la plate-forme Android?

63
Tom Dudfield

Je suis le développeur de Android-Binding . Comme @Brentley l'a dit, c'est un tout nouveau projet, mais j'espère obtenir plus de buzz et d'expérience afin qu'il puisse être amélioré. Retour à votre question, j'ai écrit quelques introductions/tutoriels simples sur MVVM avec liaison Android:

Les adoptants potentiels doivent également s'inscrire sur le groupe de discussion du projet.

84
xandy

J'utilise parfois ViewModels pour traduire à partir d'un modèle pur en quoi le modèle doit être affiché, mais une grande partie des ismes MVVM proviennent du fait que ce moteur de liaison de données massif est intégré dans le cadre WPF. Vous ne trouverez probablement pas l'expérience exacte de WPF + MVVM dans le monde Android, mais vous pouvez prendre beaucoup de bons concepts et les implémenter (juste sans le truc de liaison de données automatique).

Pour commencer, créez simplement des ViewModels. Vous n'avez pas besoin d'un framework comme Prism pour créer des ViewModels. Vous n'avez pas toutes les notifications PropertyChanged et des trucs comme ça, mais vous pouvez traduire vos données en informations qui peuvent être mieux utilisées par votre interface utilisateur qui nettoiera votre code. Un exemple parfait de cela est quelque chose que j'ai fait avec une interface utilisateur lourde. SeekBar d'Android est toujours basé sur zéro et fonctionne avec des valeurs entières, vous ne pouvez donc pas vous lier aux valeurs min, max et incrément de votre modèle. Vous pouvez utiliser un ViewModel pour traduire vos valeurs min/max en équivalents basés sur 0 que votre SeekBar peut utiliser ... juste un exemple. Il en va de même pour l'affichage des couleurs et des tailles en fonction des plages de valeurs, etc. Pour moi, c'est tout ce que ViewModels propose.

En ce qui concerne les éléments DependencyInjection, consultez RoboGuice. Je viens de commencer à l'utiliser dans l'un de mes projets après avoir vu une présentation de son créateur lors d'un Meetup local, et c'est probablement ce que vous recherchez.

RoboGuice sur Google Code

Groupe Google RoboGuice

7
Rich

Il existe désormais un Android bien qu'il soit encore en version bêta pour le moment. Des travaux sont également en cours pour ajouter la prise en charge des outils pour la syntaxe de liaison dans la version bêta de Android Studio.

Voir ci-dessous pour plus d'informations

https://developer.Android.com/tools/data-binding/guide.html

4
Ody

Android-Data-Binding bibliothèque est un outil pour connecter des données aux éléments de l'interface utilisateur. Une fois le fichier de mise en page créé et chaque élément balisé, une ligne de code lie toutes les données aux éléments de l'interface utilisateur et vous fait gagner du temps pour d'autres tâches.

3
furkan3ayraktar

Génial! Articles de @ Florina Muntenesc

Le modèle Model-View-ViewModel

Les principaux acteurs du modèle MVVM sont:

  • La vue - qui informe le ViewModel des actions de l'utilisateur
  • Le ViewModel - expose des flux de données pertinentes pour la vue
  • Le DataModel - résume la source de données. Le ViewModel fonctionne avec le DataModel pour obtenir et enregistrer les données.

Exemple d'architecture MVVM:

https://github.com/erikcaffrey/People-MVVM

https://github.com/googlesamples/Android-architecture/tree/todo-mvvm-databinding/

https://github.com/iammert/Android-MVVM-Architecture

https://github.com/segunfamisa/Android-mvvm-sample

https://github.com/manas-chaudhari/Android-mvvm

3
Dhaval Jivani

Il existe un cadre relativement nouveau en cours de développement qui permet aux vues d'être liées à ViewModels appelé Android-binding . En utilisant ce framework et RoboGuice vous pouvez mettre votre MVVM en marche. Le cadre a encore besoin de quelques travaux, mais c'est un bon point de départ.

3
Brentley Jones

Récemment, j'ai implémenté le modèle MVVM pour créer une application Android avec la bibliothèque de liaison de données. Ici vous pouvez lire la revue détaillée du travail que j'ai fait et les fragments de code: http: //cases.azoft.com/mvvm-Android-data-binding/

Pour en savoir plus sur le sujet, vous pouvez également consulter ces exemples d'application: https://github.com/ivacf/archi

Il existe des exemples visuels de travail effectué avec l'écran de recherche et de liste.

2

Il y a quelques années, je fais aussi du développement WPF & WP , Prism & MVVM Light Toolkit est couramment utilisé pour construire WP App, il est parfait pour l'architecture d'application Windows Phone, je pense! Donc j'utilise mon expérience précédente du développement WP puis imitez pour créer Android MVVM Light Toolkit (Une aide de la boîte à outils pour construire Android Application MVVM , Nous avons plus d'attributs pour la liaison de données de la vue (comme Uri pour ImageView), nous créons une commande pour gérer l'événement (comme un clic sur le bouton), nous avons également un canal de message global pour communiquer avec d'autres ViewModel) .

GitHub: Android MVVM Light Toolkit , il existe des exemples pour référence.

Architecture : http://upload-images.jianshu.io/upload_images/966283-78b410b9af8b18fa.png?imageMogr2/auto-orient/ bande% 7CimageView2/2/w/124

j'espère vous aider!

2
KelinHong

Il y a un projet appelé MVVMCross .

C'est un framework MVVM gratuit, open-source et bien conçu, développé par Stuart Lodge.

Il a implémenté la liaison pour Android et iPhone, donc maintenant MVVM est également applicable à toutes ces plateformes.

Pour moi, c'est l'un des meilleurs frameworks MVVM - il montre vraiment la puissance de MVVM. Avec lui, vous pouvez écrire un code (couches de modèle et de vue) pour différentes plates-formes (WP7, Android, iPhone, WinRT) et simplement changer l'interface utilisateur de l'application (couche de vue).

1
gerichhome

Juste pour poster comme référence à d'autres personnes qui pourraient être intéressées. Je contribue à RoboBinding - Un cadre de modèle de présentation de liaison de données pour la plate-forme Android. C'est un autre cadre dans le même but. En plus d'aider à la structure du projet , l'un des principaux objectifs de RoboBinding est de rendre les tests Android avec des tests JUnit normaux possibles au lieu de Android tests unitaires, car les tests unitaires sont si importants pour garantir la qualité des projets, mais Android les tests unitaires prennent un certain temps à s'exécuter et rendent les tests unitaires peu pratiques. RoboBinding lui-même est livré avec plus de 300 tests JUnit pour garantir sa qualité. - [[# #]] mvvm [~ # ~] provient de Microsoft en tant que spécialisation du modèle de conception du modèle de présentation introduit par Martin Fowler. Autres alternatives: Android-Binding, Bindroid et MvvmCross.

1
Cheng

https://github.com/MindorksOpenSource/Android-mvvm-architecture

Architecture MVVM Android: exemple d'application

Ce référentiel contient un exemple d'application détaillé qui implémente l'architecture MVVM à l'aide de Dagger2, Room, RxJava, FastAndroidNetworking, PlaceHolderView et AndroidDebugDatabase

L'application propose les packages suivants:

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.
0
mohit issar

Il existe de nombreux exemples de framework MVVM dans github. Je recommande d'utiliser DroidWizard

DroidWizard fait son propre couplage entre la vue et le modèle de vue et le cadre est légèrement différent de mvvm.

ModelEngine ViewModel View instean de Model ViewModel View

0
Prasanna Anbu

Vous pouvez suivre ces étapes pour la liaison de données dans les fragments: J'ai publié la conception et la classe Java à la fois dans l'exemple pour la liaison de données dans le fragment.

<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;
    }

}

Site du développeur DataBinding Guide Line

0
Ramkailash

J'ai trouvé ceci Writing Testable Android MVVM Série d'applications écrites sur MVVM en utilisant Android La bibliothèque de liaison de données est vraiment sympa. Dans la série, il expliqué d'un exemple simple à un aperçu du recyclage, et il y a aussi des tests.

Vous pouvez peut-être aussi essayer la bibliothèque mv2m .

0
ninjahoahong