Подтвердить что ты не робот

Примеры проектов MVVM для Android

В настоящее время я занимаюсь разработкой WPF и начал создавать базовые приложения для Android. При создании приложений WPF я часто использую MVVM, обычно используя Prism, и хотел бы знать, есть ли какие-либо примеры MVVM для платформы Android?

4b9b3361

Ответ 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