wake-up-neo.com

Android MVVM Design Pattern Beispiele

Ich arbeite derzeit viel an der WPF-Entwicklung und habe angefangen, grundlegende Android=) Apps zu erstellen. Beim Erstellen von WPF-Apps verwende ich häufig MVVM, normalerweise mit Prism, und würde gerne wissen, ob es Beispiele dafür gibt MVVM für die Android Plattform?

63
Tom Dudfield

Ich bin der Entwickler von Android-Binding . Wie @Brentley sagte, es ist ein sehr neues Projekt, aber ich hoffe, dass ich mehr Begeisterung und Erfahrung habe, damit es verbessert werden kann. Zurück zu Ihrer Frage, ich habe einige einfache Einführungen/Tutorials zu MVVM mit Android-Bindung geschrieben:

Potenzielle Anwender registrieren sich bitte auch in der Projektdiskussionsgruppe.

84
xandy

Manchmal verwende ich ViewModels, um von einem reinen Modell in das zu konvertieren, als was das Modell angezeigt werden soll, aber so viel von den MVVM-Ismen rührt von der Tatsache her, dass Sie diese massive Datenbindungs-Engine in das WPF-Framework eingebaut haben. Sie werden wahrscheinlich nicht die genaue Erfahrung von WPF + MVVM in der Android= Welt finden, aber Sie können viele der guten Konzepte nehmen und sie implementieren (nur ohne das automatische Datenbindungsmaterial).

Zum einen erstellen Sie einfach ViewModels. Sie benötigen kein Framework wie Prism, um ViewModels zu erstellen. Sie haben nicht alle PropertyChanged-Benachrichtigungen und ähnliches, aber Sie können Ihre Daten in Informationen umwandeln, die von Ihrer Benutzeroberfläche besser verwendet werden können und Ihren Code bereinigen. Ein perfektes Beispiel dafür ist etwas, das ich mit einer sliderlastigen Benutzeroberfläche gemacht habe. Die SeekBar von Android basiert immer auf Null und arbeitet mit ganzzahligen Werten, sodass Sie keine Bindung an die Werte für Min, Max und Inkrement Ihres Modells herstellen können. Sie können ein ViewModel verwenden, um Ihre min/max-Werte in 0-basierte Entsprechungen zu übersetzen, die Ihre SeekBar verwenden kann ... nur ein Beispiel. Gleiches gilt für die Anzeige von Farben und Größen, die auf Wertebereichen usw. basieren. Für mich sind ViewModels genau das, worum es geht.

Schauen Sie sich RoboGuice an, um mehr über DependencyInjection zu erfahren. Ich habe gerade damit begonnen, dies in einem meiner Projekte zu verwenden, nachdem ich eine Präsentation seines Erstellers bei einem lokalen Meetup gesehen habe, und es ist wahrscheinlich genau das, wonach Sie suchen.

RoboGuice bei Google Code

RoboGuice Google Group

7
Rich

Es gibt jetzt ein offizielles Android Datenbindungs-Plugin, obwohl es sich derzeit noch in der Beta befindet. In der Beta-Version von Android Studio wird außerdem daran gearbeitet, Tooling-Unterstützung für die Bindungssyntax hinzuzufügen.

Weitere Informationen finden Sie weiter unten

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

4
Ody

Android-Data-Binding library ist ein Tool zum Verbinden von Daten mit Elementen der Benutzeroberfläche. Sobald die Layoutdatei erstellt und die einzelnen Elemente mit Tags versehen wurden, werden alle Daten in einer Codezeile mit Elementen der Benutzeroberfläche verknüpft, und Sie sparen Zeit für andere Aufgaben.

3
furkan3ayraktar

Groß! Artikel von @ Florina Muntenesc

Das Model-View-ViewModel-Muster

Die Hauptakteure im MVVM-Muster sind:

  • Die Ansicht - informiert das ViewModel über die Aktionen des Benutzers
  • Das ViewModel - macht Datenströme verfügbar, die für die Ansicht relevant sind
  • Das DataModel - abstrahiert die Datenquelle. Das ViewModel arbeitet mit dem DataModel zusammen, um die Daten abzurufen und zu speichern.

Beispiel für eine MVVM-Architektur:

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

Es wird ein relativ neues Framework entwickelt, mit dem Views an ViewModels gebunden werden können. Es heißt Android-binding . Mit diesem Framework und RoboGuice können Sie Ihre MVVM aktivieren. Das Framework muss noch bearbeitet werden, aber es ist ein guter Ausgangspunkt.

3
Brentley Jones

Kürzlich habe ich das MVVM-Muster zum Erstellen einer Android App mit Datenbindungsbibliothek implementiert. Hier können Sie den detaillierten Rückblick auf meine geleistete Arbeit und die Codefragmente lesen: http: //cases.azoft.com/mvvm-Android-data-binding/

Weitere Informationen zu diesem Thema finden Sie auch in den folgenden App-Beispielen: https://github.com/ivacf/archi

Es gibt visuelle Beispiele für die Arbeit mit dem Such- und Listenbildschirm.

Vor ein paar Jahren habe ich auch einige WPF- und WP-Entwicklungen durchgeführt. Prism & MVVM Light Toolkit wird häufig zum Erstellen von WP App verwendet, es ist perfekt für Windows Phone-Anwendungsarchitektur, glaube ich! Ich nutze also meine bisherigen Erfahrungen von WP Entwicklung dann imitieren Android MVVM Light Toolkit (Ein Toolkit zum Erstellen Android MVVM-Anwendung , Wir haben mehr Attribute für die Datenbindung von View (wie Uri für ImageView), wir erstellen einen Befehl für den Umgang mit Ereignissen (wie das Klicken auf einen Button), haben auch eine globale Nachrichten-Pipe, um mit anderen ViewModel zu kommunizieren. .

GitHub: Android MVVM Light Toolkit , es gibt Beispiele als Referenz.

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

hoffe, dir zu helfen!

2
KelinHong

Es gibt ein Projekt namens MVVMCross .

Es ist ein kostenloses, Open-Source- und gut gestaltetes MVVM-Framework, das von Stuart Lodge entwickelt wurde.

Er hat Bindungen für Android und iPhone implementiert, daher ist MVVM jetzt auch für alle diese Plattformen anwendbar.

Für mich ist es eines der besten MVVM-Frameworks - es zeigt wirklich die Leistung von MVVM. Damit können Sie einen Code (Modell- und Ansichtsmodell-Layer) für verschiedene Plattformen (WP7, Android, iPhone, WinRT) schreiben und einfach die Anwendungs-Benutzeroberfläche (Ansichts-Layer) ändern.

1
gerichhome

Nur um als Verweis auf andere Personen zu posten, die interessiert sein könnten. Ich bin Mitwirkender bei RoboBinding - Ein datenbindendes Präsentationsmodell-Framework für die Android Plattform. Es ist ein weiteres Framework für den gleichen Zweck. Abgesehen von der Unterstützung bei der Projektstruktur Ein Schwerpunkt von RoboBinding besteht darin, das Testen von Android Apps mit normalen JUnit-Tests anstelle von Android Unit-Tests zu ermöglichen, da Unit-Tests so wichtig sind, um das zu gewährleisten Qualität von Projekten, aber Android Komponententests dauern ewig und machen Komponententests etwas unpraktisch. RoboBinding selbst wird mit mehr als 300 JUnit-Tests geliefert, um die Qualität sicherzustellen. - MVVM stammt von Microsoft als Spezialisierung des von Martin Fowler eingeführten Entwurfsmusters für Präsentationsmodelle. Weitere Alternativen: Android-Bindung, Bindroid und MvvmCross.

1
Cheng

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

Android MVVM Architecture: Beispiel-App

Dieses Repository enthält eine detaillierte Beispiel-App, die die MVVM-Architektur mithilfe von Dagger2, Room, RxJava, FastAndroidNetworking, PlaceHolderView und AndroidDebugDatabase implementiert

Die App hat folgende Pakete:

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

Es gibt viele Beispiele für MVVM-Frameworks in Github. Ich empfehle die Verwendung von DroidWizard

DroidWizard erstellt eine eigene Kopplung zwischen Ansicht und Ansichtsmodell, und das Framework unterscheidet sich geringfügig von mvvm.

ModelEngine ViewModel View instean von Model ViewModel View

0
Prasanna Anbu

Sie können diese Schritte für DataBinding in Fragmenten ausführen: Ich habe Design und Java class sowohl im Beispiel für das Binden von Daten in Fragmenten veröffentlicht.

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

}

DataBinding-Leitfaden für Entwicklerwebsites

0
Ramkailash

Ich fand das Writing Testable Android MVVM App-Serie über MVVM geschrieben mit Android Data Binding Library ist wirklich schön. In der Serie er Vom einfachen Beispiel bis zur Recyclingübersicht. Es gibt auch Tests.

Sie können vielleicht auch die mv2m Bibliothek ausprobieren.

0
ninjahoahong