Przykłady wzorców projektowych Android MVVM
Obecnie zajmuję się rozwojem WPF i zacząłem tworzyć podstawowe aplikacje na Androida. Tworząc aplikacje WPF często korzystam z MVVM, zwykle używam Prism i chciałbym się dowiedzieć, czy są jakieś przykłady MVVM dla Platformy Android?
14 answers
Jestem twórcą Android-Binding. Jak powiedział @Brentley, jest to bardzo nowy projekt, ale mam nadzieję, że zdobędę więcej szumu i doświadczenia, aby można było go ulepszyć. Wracając do twojego pytania, napisałem kilka prostych wstępów / samouczków na MVVM z Androidem-binding:
- Android MVVM Tutorials (with Android binding)
- Wprowadzenie do Android Binding (codeproject)
- Walidacja modelu w powiązaniu z Androidem (codeproject)
- Wiki in project homepage
Potencjalni użytkownicy prosimy również o rejestrację na grupie dyskusyjnej projektu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-16 13:40:27
Czasami używam ViewModels do tłumaczenia z czystego modelu na to, co Model powinien być wyświetlany, ale tak wiele z MVVM-isms pochodzi z faktu, że masz ten ogromny silnik wiązania danych wbudowany w Framework WPF. Prawdopodobnie nie znajdziesz dokładnego doświadczenia WPF + MVVM w świecie Androida, ale możesz wziąć wiele dobrych koncepcji i wdrożyć je (tylko bez automatycznego wiązania danych).
Po prostu stwórz model widoku. Nie potrzebujesz RAM jak pryzmat do tworzenia Viewmodeli. Nie masz wszystkich właściwych powiadomień i podobnych rzeczy, ale możesz przetłumaczyć swoje dane na informacje, które mogą być lepiej wykorzystane przez twój UI, który wyczyści Twój kod. Doskonałym tego przykładem jest coś, co zrobiłem z ciężkim suwakiem interfejsu użytkownika. Pasek SeekBar systemu Android jest zawsze oparty na zerze i działa z wartościami całkowitymi, więc nie można powiązać z wartościami min, max i increment z modelu. Możesz użyć modelu widoku, aby przetłumaczyć wartości min / max NA Odpowiedniki oparte na 0, których może używać twój SeekBar...to tylko przykład. To samo dotyczy wyświetlania kolorów i rozmiarów na podstawie zakresów wartości, itp. Dla mnie na tym polega ViewModels.
Jeśli chodzi o DependencyInjection, sprawdź RoboGuice. Właśnie zacząłem używać tego w jednym z moich projektów po obejrzeniu prezentacji jego twórcy na lokalnym Meetupie i prawdopodobnie jest to to, czego szukasz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-11 20:27:52
Istnieje teraz oficjalny Android Data Binding Plugin, chociaż nadal w wersji beta w tej chwili. Trwają również prace nad dodaniem obsługi narzędzi dla składni wiązania w wersji beta Android Studio.
Zobacz poniżej, aby uzyskać więcej informacji
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-30 11:00:42
Rozwijany jest stosunkowo nowy framework, który pozwala na łączenie widoków z Viewmodelami o nazwie android-binding . Korzystając z tego frameworka i RoboGuice możesz włączyć swój MVVM. Ramy nadal wymagają trochę pracy, ale to dobry punkt wyjścia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-15 20:19:04
Biblioteka Android-Data-Binding jest narzędziem do łączenia danych z elementami interfejsu użytkownika. Po utworzeniu pliku układu i oznakowaniu każdego elementu jedna linia kodu wiąże wszystkie dane z elementami interfejsu użytkownika i oszczędza czas na inne zadania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-14 21:43:53
Ostatnio zaimplementowałem wzorzec MVVM do budowania aplikacji na Androida z biblioteką wiązania danych. Tutaj możesz przeczytać szczegółowy przegląd wykonanej przeze mnie pracy oraz fragmenty kodu: http://cases.azoft.com/mvvm-android-data-binding/
Aby dowiedzieć się więcej na ten temat, Możesz również spojrzeć na te próbki aplikacji: https://github.com/ivacf/archi
Istnieją wizualne przykłady pracy wykonanej za pomocą ekranu wyszukiwania i listy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-15 14:36:40
Kilka lat temu robię również WPF i WP development, Prism & MVVM Light Toolkit jest powszechnie używany do budowania aplikacji WP, jest idealny dla architektury aplikacji windows phone myślę ! więc używam mojego poprzedniego doświadczenia WP rozwoju następnie naśladować, aby utworzyć Android MVVM Light Toolkit(Zestaw Narzędzi pomoc do budowania aplikacji Android MVVM ,mamy więcej atrybutów do wiązania danych widoku(jak Uri dla ImageView), tworzymy jakieś polecenie do czynienia z wydarzeniem( jak kliknięcie przycisku), również mieć global message pipe do komunikacji z innym ViewModel).
GitHub:Android MVVM Light Toolkit , istnieją próbki w celach informacyjnych.
Architektura: http://upload-images.jianshu.io/upload_images/966283-78b410b9af8b18fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
Mam nadzieję Ci pomóc!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-23 03:12:03
Świetnie! Articals by @ Florina Muntenescu
Wzorzec Model-View-ViewModel
Głównymi graczami we wzorze MVVM są:
- widok-który informuje ViewModel o działaniach użytkownika
- ViewModel-wyświetla strumienie danych istotnych dla widoku
- DataModel-abstrakcja źródła danych. ViewModel współpracuje z DataModel do pobierania i zapisywania danych.
Przykład MVVM Architektura:
Https://github.com/erikcaffrey/People-MVVM
Https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding/
Https://github.com/iammert/Android-MVVM-Architecture
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-03 12:53:51
Istnieje jeden projekt o nazwie MVVMCross .
To darmowy, open-source i dobrze zaprojektowany framework MVVM, opracowany przez Stuarta Lodge.
Zaimplementował Wiązanie dla Androida i iPhone ' a, więc teraz MVVM ma zastosowanie również do wszystkich tych platform.
Dla mnie jest to jeden z najlepszych frameworków MVVM-naprawdę pokazuje moc MVVM. Dzięki niemu możesz napisać jeden kod (warstwy modelu i viewmodel) dla różnych platform (WP7, Android, iPhone, WinRT) i po prostu zmienić interfejs aplikacji (warstwa widoku).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-28 11:04:40
Wystarczy zamieścić jako odniesienie do innych osób, które mogą być zainteresowane. Jestem współautorem RoboBinding - ramowego modelu prezentacji wiążącej dane dla Platformy Android. To kolejne ramy dla tego samego celu. Oprócz pomocy w strukturze projektu, jednym z głównych celów Robobindingu jest umożliwienie testowania aplikacji na Androida z normalnymi testami JUnit zamiast testów jednostkowych Androida, ponieważ testy jednostkowe są tak ważne, aby zagwarantować jakość projektów, ale testy jednostkowe Androida potrzeba czasu, aby uruchomić i zrobić testy jednostkowe nieco niepraktyczne. Sam RoboBinding zawiera ponad 300 testów JUnit, aby zapewnić jego jakość. MVVM wywodzi się od Microsoftu jako specjalizacja wzorca projektowego modelu prezentacji wprowadzonego przez Martina Fowlera. Inne alternatywy: Android-Binding, Bindroid i MvvmCross.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-02 01:52:03
Możesz wykonać następujące kroki dla Databindingu we fragmentach: umieściłem design i klasę java zarówno w przykładzie do wiązania danych we fragmencie.
<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;
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 09:52:47
Znalazłem to pisanie Testowalnej serii aplikacji na Androida MVVM pisane o MVVM za pomocą biblioteki wiązania danych Androida jest naprawdę miłe. W serii wyjaśnił od prostego przykładu do recyclerview, są też testy.
Możesz też wypróbować bibliotekę mv2m.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-30 14:31:06
Istnieje wiele przykładów frameworku MVVM w GitHubie. Polecam użycie DroidWizard
DroidWizard wykonuje własne sprzężenie między widokiem a modelem widoku, a framework nieco różni się od mvvm.
ModelEngine ViewModel View instean modelu ViewModel View
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 06:07:02
Https://github.com/MindorksOpenSource/android-mvvm-architecture
Architektura MVVM Androida: Przykładowa aplikacja
To repozytorium zawiera szczegółową przykładową aplikację, która implementuje architekturę MVVM przy użyciu Dagger2, Room, RxJava, FastAndroidNetworking, PlaceHolderView i AndroidDebugDatabase
Aplikacja posiada następujące pakiety:
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.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-25 08:29:24