Двустороннее связывание данных, RecyclerView, ViewModel, Room, LiveData, Oh My

Исправленный JavaScript Дугласа Крокфорда включает функцию String.prototype.supplant. Это короткий, знакомый и простой в использовании:

String.prototype.supplant = function (o) {
    return this.replace(/{([^{}]*)}/g,
        function (a, b) {
            var r = o[b];
            return typeof r === 'string' || typeof r === 'number' ? r : a;
        }
    );
};

// Usage:
alert("I'm {age} years old!".supplant({ age: 29 }));
alert("The {a} says {n}, {n}, {n}!".supplant({ a: 'cow', n: 'moo' }));

Если вы не хотите менять прототип String, вы всегда можете приспособить его к автономному или поместить его в другое пространство имен или что угодно.

1
задан Bink 16 January 2019 в 17:16
поделиться

1 ответ

Я только что столкнулся с той же проблемой настройки двухстороннего связывания данных в архитектуре MVVM со списком ViewModel и RecyclerView. Я решил, что в этой ситуации было невозможно или не стоит усилий, чтобы заставить работать двухстороннее связывание, потому что вы напрямую не используете viewmodel в макете элемента повторного просмотра (используемая переменная макета имеет тип Person, а не Ваша модель представления).

Я бы предложил добавить вашу модель представления в качестве переменной макета, затем использовать android:onClick="@{() -> viewmodel.onSwitchClicked()}" и реализовать этот метод в вашей модели представления.

Подробности в моем проекте смотрите здесь: https://github.com/linucksrox/ReminderList

.
0
ответ дан linucksrox 16 January 2019 в 17:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: