Создание базового приложения MVP для Android - PullRequest
0 голосов
/ 19 мая 2018
public class MainActivity extends AppCompatActivity {
    //text
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View view) {
        //Grab input
        EditText editText = findViewById(R.id.editText);
        String message = editText.getText().toString();
        //Throw input onto the label
        TextView destinationText = findViewById(R.id.destinationText);
        destinationText.setText(message);
    }
}

Это приложение имеет пользовательский интерфейс с EditText, Textview и кнопкой.Кнопка скопирует текст, введенный пользователем в объект EditText, и поместит его в TextView.

MVP и MVVM кажутся наиболее популярными шаблонами проектирования сегодня.

В духе обученияОдин из этих архитектурных шаблонов проектирования. Как я могу адаптировать это самое простое приложение к архитектурному шаблону MVP?

1 Ответ

0 голосов
/ 19 мая 2018

Я определенно рекомендую немного исследований, прежде чем начинать какой-либо кусок кода.Сегодня Android предлагает множество интересных архитектур приложений, и хотя выбор подходящего варианта не так уж и прост, это путешествие поможет вам многому научиться.

Хорошей отправной точкой для этого является официальный Google * 1003.* примеры проектов архитектуры на GitHub.Не только у вас есть много разных архитектур, таких как MVP, MVVM, MVI, но также есть несколько интересных вариантов в каждой архитектуре.

С другой стороны, Android проделывает большую работу, пытаясь упростить создание большой коллекции библиотек.,Это называется Компоненты архитектуры Android, и здесь у вас есть несколько их примеров , чтобы начать играть и адаптировать их паттерны.

Наконец, если вы все-таки решите пойти с MVP, есть нескольковещи, которые вы должны будете сделать в вашем примере:

  1. Ваш MainActivity (Представление) должен реализовать контракт этого Представления (например: MainViewContract).
  2. В пределахВ этом представлении вы должны получить ссылку на MainPresenter, передающую ссылку на представление, которое реализует MainViewContract.
  3. . MainPresenter также реализует контракт (например: MainPresenterContract).

В основном все необходимые соединения установлены.MainPresenter будет отвечать за бизнес-обработку Просмотр входов и выходов.В вашем случае входы и выходы очень просты:

Входы (MainPresenterContract):

  • void copyText(String textToCopy);

Выходы (MainViewContract):

  • void showCopiedText(String copiedText);

Когда пользователь нажмет кнопку, вы отправите сообщение copyText через локальный экземпляр докладчика.Затем докладчик получит это и выполнит вывод, вызвав showCopiedText.Поскольку основное представление MainActivity реализует MainViewContract, вы получите выходное сообщение в локальном методе представления, в котором вы просто рисуете текст на Textview.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...