Примеры проектов MVVM для Android
В настоящее время я занимаюсь разработкой WPF и начал создавать базовые приложения для Android. При создании приложений WPF я часто использую MVVM, обычно используя Prism, и хотел бы знать, есть ли какие-либо примеры MVVM для платформы Android?
Ответы
Ответ 1
Я разработчик Android-привязка. Как @Brentley сказал, это очень новый проект, но я надеюсь получить больше шума и опыта, чтобы его можно было улучшить. Вернемся к вашему вопросу, я написал несколько простых инструкций по MVVM с привязкой к андроиду:
Потенциальные усыновители, пожалуйста, также зарегистрируйтесь в группе обсуждения .
Ответ 2
Я иногда использую ViewModels для перевода с чистой модели на то, как должна отображаться модель, но большая часть MVVM-isms исходит из того факта, что у вас есть этот массивный механизм привязки данных, встроенный в среду WPF. Вероятно, вы не найдете точного опыта WPF + MVVM в мире Android, но вы можете взять много хороших концепций и реализовать их (просто без использования данных для передачи данных).
Для этого просто создайте ViewModels. Для создания ViewModels вам не нужна инфраструктура, например Prism. У вас нет всех уведомлений PropertyChanged и тому подобного, но вы можете перевести свои данные в информацию, которая может быть лучше использована вашим пользовательским интерфейсом, который очистит ваш код. Прекрасным примером этого является то, что я сделал с большим пользовательским интерфейсом с ползунком. Android SeekBar всегда работает на основе нуля и работает с целыми значениями, поэтому вы не можете привязываться к значениям min, max и increment из вашей модели. Вы можете использовать ViewModel для перевода ваших значений min/max в эквиваленты на основе 0, которые ваш SeekBar может использовать... просто пример. То же самое касается отображения цветов и размеров на основе диапазонов значений и т.д. Для меня это то, что представляют собой ViewModels.
Что касается материала DependencyInjection, проверьте RoboGuice. Я только начал использовать это в одном из своих проектов, увидев презентацию его создателя на местном Meetup, и, вероятно, именно то, что вы ищете.
RoboGuice в Google Code
RoboGuice Google Group
Ответ 3
В настоящее время существует официальный плагин привязки данных Android, хотя он все еще находится в стадии бета-тестирования. Также ведется работа по добавлению поддержки инструментов для синтаксиса привязки в бета-версии Android Studio.
Подробнее см. ниже.
https://developer.android.com/tools/data-binding/guide.html
Ответ 4
Существует относительно новая структура, которая позволяет привязывать представления к ViewModels, называемым android-binding. Используя эту структуру и RoboGuice, вы можете получить свой MVVM. Рамки все еще нуждаются в некоторой работе, но это хорошая отправная точка.
Ответ 5
Android-Data-Binding библиотека - это инструмент для подключения данных к элементам пользовательского интерфейса. После создания файла макета и каждого элемента одна строка кода связывает все данные с элементами пользовательского интерфейса и экономит ваше время для других задач.
Ответ 6
Недавно я реализовал шаблон MVVM для создания приложения Android с библиотекой привязки данных. Здесь вы можете прочитать подробный обзор выполненной работы и фрагментов кода: http://cases.azoft.com/mvvm-android-data-binding/
Чтобы узнать больше о теме, вы также можете посмотреть эти примеры приложений: https://github.com/ivacf/archi
Есть визуальные примеры работы с экраном поиска и списка.
Ответ 7
Несколько лет назад я также занимаюсь разработкой WPF и WP, Prism и MVVM Light Toolkit обычно используют для создания приложения WP, он идеально подходит для архитектуры приложений для Windows, я думаю! поэтому я использую свой предыдущий опыт разработки WP, а затем подражаем созданию Android MVVM Light Toolkit (Инструментарий помогает создавать Android MVVM Application, у нас есть больше атрибутов для привязки данных к виду (например, Uri для ImageView), мы создаем некоторую команду для работы с событием (например, щелчком кнопки), также имеем глобальный канал сообщений для связи с другим ViewModel).
GitHub: Android MVVM Light Toolkit, есть образцы для справки.
Архитектура: http://upload-images.jianshu.io/upload_images/966283-78b410b9af8b18fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
надеюсь помочь вам!
Ответ 8
Отлично! Художественные произведения @Флорина Мунтенеску
Шаблон Model-View-ViewModel
Основными игроками в шаблоне MVVM являются:
- Вид - который информирует ViewModel о действиях пользователей.
- ViewModel - предоставляет потоки данных, относящиеся к представлению
- DataModel - абстрагирует источник данных. ViewModel работает с
DataModel для получения и сохранения данных.
Пример архитектуры 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
Ответ 9
Существует один проект под названием MVVMCross.
Это бесплатная, с открытым исходным кодом и хорошо продуманная инфраструктура MVVM, разработанная Stuart Lodge.
Он реализовал привязку для Android и iPhone, поэтому теперь MVVM применим ко всем этим платформам.
Для меня это один из лучших MVVM-фреймворков - он действительно показывает мощь MVVM. С его помощью вы можете написать один код (модель и слои viewmodel) для разных платформ (WP7, Android, iPhone, WinRT) и просто изменить пользовательский интерфейс приложения (уровень представления).
Ответ 10
Просто отправьте ссылку на других людей, которые могут быть заинтересованы. Я вношу вклад в RoboBinding - Основа для представления данных для платформы Android. Это еще одна структура для той же цели. Помимо помощи в разработке проекта, одним из основных направлений RoboBinding является создание тестовых приложений для Android с обычными JUnit-тестами, которые можно использовать вместо тестов на устройствах Android, поскольку модульные тесты настолько важны, чтобы гарантировать качество проектов, но тесты для Android-устройств требуют времени для запуска и сделать отдельные тесты несколько непрактичными. RoboBinding сам поставляется с более чем 300 тестов JUnit для обеспечения его качества. MVVM возникла из Microsoft как специализация шаблона проектирования модели Presentation, представленного Мартином Фаулером. Другие альтернативы: Android-Binding, Bindroid и MvvmCross.
Ответ 11
Вы можете выполнить следующие шаги для DataBinding во Фрагментах: я опубликовал проект и класс 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;
}
}
Сайт разработчика DataBinding Guide
Ответ 12
Я нашел это Запись тестового Android MVVM Серия приложений, написанная о MVVM с использованием библиотеки привязки данных Android, действительно хороша. В серии он объяснил с простого примера recyclerview, и есть также тесты.
Возможно, вы можете попробовать mv2m library.
Ответ 13
Существует множество примеров для MVVM-фреймворка в github. Я рекомендую использовать DroidWizard
DroidWizard делает свою собственную связь между моделью просмотра и представления, а структура немного отличается от mvvm.
ModelEngine ViewModel View instean View Model Model ViewModel View