Примеры шаблонов дизайна Android MVVM
в настоящее время я занимаюсь разработкой WPF и начал создавать некоторые базовые приложения для Android. При создании приложений WPF я часто использую MVVM, обычно используя Prism, и хотел бы знать, есть ли какие-либо примеры MVVM для платформы Android?
14 ответов:
Я разработчик Android-Привязка. Как сказал @Brentley, это очень новый проект, но я надеюсь получить больше шума и опыта, чтобы его можно было улучшить. Возвращаясь к вашему вопросу, я написал несколько простых вводных / учебных пособий по MVVM с Android-привязкой:
- Android MVVM учебники (с Android привязки)
- введение в привязку Android (codeproject)
- проверка модели в Android Binding (codeproject)
- Вики на главной странице проекта
потенциальные усыновители, пожалуйста, также зарегистрируйтесь на дискуссионная группа по проекту.
Я иногда использую ViewModels для перевода с чистой модели на то, что модель должна отображаться как, но так много MVVM-isms происходит из-за того, что у вас есть этот массивный механизм привязки данных, встроенный в структуру WPF. Вы, вероятно, не найдете точного опыта WPF + MVVM в мире Android, но вы можете взять много хороших концепций и реализовать их (просто без автоматической привязки данных).
для одного, просто создайте ViewModels. Вам не нужно рамки, такие как Prism для создания ViewModels. У вас нет всех уведомлений PropertyChanged и тому подобного, но вы можете перевести свои данные в информацию, которая может быть лучше использована вашим пользовательским интерфейсом, который очистит ваш код. Прекрасным примером этого является то, что я сделал с ползунком тяжелого пользовательского интерфейса. Панель поиска Android всегда основана на нуле и работает с целочисленными значениями, поэтому вы не можете привязать к значениям min, max и increment из своей модели. Вы можете использовать ViewModel для перевода вашего min / max значения в эквиваленты на основе 0, которые может использовать ваша панель поиска...просто пример. То же самое касается отображения цветов и размеров на основе диапазонов значений и т. д. Для меня, это то, что ViewModels все О.
Что касается материала DependencyInjection, проверьте RoboGuice. Я только начал использовать это в одном из своих проектов после просмотра презентации его создателя на местном собрании, и это, вероятно, именно то, что вы ищете.
теперь есть официальный плагин привязки данных Android, хотя он все еще находится в бета-версии на данный момент. Также ведется работа по добавлению инструментальной поддержки синтаксиса привязки в бета-версии Android Studio.
см. ниже для получения дополнительной информации
разрабатывается относительно новая структура, которая позволяет привязывать представления к ViewModels под названием android-привязка. Используя эту структуру и RoboGuice вы можете получить ваш MVVM дальше. Структура все еще нуждается в некоторой работе, но это хорошая отправная точка.
Android-Data-Binding библиотека-это инструмент для подключения данных к элементам пользовательского интерфейса. После того, как файл макета создан и каждый элемент помечен, одна строка кода связывает все данные с элементами пользовательского интерфейса и экономит ваше время для других задач.
недавно я реализовал шаблон MVVM для создания приложения для Android с библиотекой привязки данных. Здесь вы можете прочитать подробный обзор проделанной мной работы и фрагменты кода:http://cases.azoft.com/mvvm-android-data-binding/
чтобы узнать больше о теме, вы также можете взглянуть на эти примеры приложений:https://github.com/ivacf/archi
есть наглядные примеры работы с поиском и списком экран.
несколько лет назад я также делаю некоторые разработки WPF&WP,Prism & MVVM Light Toolkit обычно используется для создания приложения WP, он идеально подходит для архитектуры приложений windows phone, я думаю ! поэтому я использую свой предыдущий опыт разработки WP, а затем имитирую создание Android MVVM Light Toolkit(помощь инструментария для создания приложения Android MVVM,у нас есть больше атрибутов для привязки данных представления (например, Uri для ImageView), мы создаем некоторую команду для работы с событием( например, щелчок кнопки), а также есть глобальный канал сообщений для связи с другими ViewModel).
GitHub:Android MVVM Light Toolkit, есть образцы для справки.
надеюсь помочь вам!
великолепно! Артикли от @Florina Muntenescu
Модель-Представление-Модель Представления Шаблона
основными игроками в шаблоне MVVM являются:
- вид-который информирует ViewModel о действиях пользователя
- ViewModel-предоставляет потоки данных, относящиеся к представлению
- DataModel-абстрагирует источник данных. ViewModel работает с модель данных для получения и сохранения данные.
пример MVVM Архитектура:
https://github.com/erikcaffrey/People-MVVM
https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding/
https://github.com/iammert/Android-MVVM-Architecture
есть один проект под названием MVVMCross.
Это бесплатный, с открытым исходным кодом и хорошо разработанный MVVM framework, разработанный Stuart Lodge.
он реализовал привязку для Android и iPhone, так что теперь MVVM применим ко всем этим платформам тоже.
для меня это один из лучших фреймворков MVVM - он действительно показывает силу MVVM. С его помощью вы можете написать один код (модель и слои viewmodel) для разных платформ (WP7, Android, iPhone, WinRT) и просто изменить пользовательский интерфейс приложения (вид слоя).
просто разместить в качестве ссылки на других людей, которые могут быть заинтересованы. Я являюсь участником RoboBinding - структура модели представления привязки данных для платформы Android. Это еще одна структура для той же цели. Помимо помощи в структуре проекта, одним из основных направлений для RoboBinding является тестирование android-приложений с помощью обычных тестов JUnit вместо модульных тестов Android, поскольку модульные тесты настолько важны, чтобы гарантировать качество проектов, но Android модульные тесты требуют времени для запуска и делают модульные тесты несколько непрактичными. RoboBinding сам приходит с больше чем 300 испытаниями JUnit для того чтобы обеспечить свое качество. MVVM возникла из Microsoft как специализация Шаблона дизайна модели презентации, введенного Мартином Фаулером. Другие альтернативы: Android-привязка, Bindroid и MvvmCross.
вы можете выполнить следующие шаги для привязки данных во фрагментах: я опубликовал дизайн и класс java как в Примере для привязки данных во фрагменте.
<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; } }
Я нашел это написание тестируемого Android MVVM серия приложений, написанная о MVVM с использованием библиотеки привязки данных Android, действительно хороша. В серии он объяснил от простого примера до recyclerview, и есть тесты, а также.
вы можете попробовать библиотека mv2m тоже.
есть много примеров для MVVM framework в github. Я рекомендую использовать DroidWizard
DroidWizard делает свою собственную связь между представлением и моделью представления, и структура немного отличается от mvvm.
ModelEngine с ViewModel посмотреть instean модели модель представления вида
https://github.com/MindorksOpenSource/android-mvvm-architecture
архитектура Android MVVM: пример приложения
этот репозиторий содержит подробный пример приложения, которое реализует архитектуру MVVM с использованием Dagger2, Room, RxJava, FastAndroidNetworking, PlaceHolderView и AndroidDebugDatabase
приложение имеет следующие пакеты:
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.