Как правильно получить данные из recyclerView в Activity, из которой был установлен RV? - PullRequest
1 голос
/ 30 октября 2019

У меня есть Activity, который имеет RecyclerView и сохранить Button. Каждый элемент (футбольный матч) RecyclerView содержит некоторый текст (название команды) и EditText, где пользователь вводит данные (фактически вводит счет матча). Моя цель - сохранить эти оценки в списке в Activity, когда пользователь нажал кнопку «Сохранить».

Я прочитал аналогичный вопрос ( Как я могу вернуть данные из адаптера RecyclerView? ), разница в том, что мне нужно получать данные из editText, а не из checkBox (который легко проверить с помощью clickListeners в onBindViewHolder методе в Adapter)

Так что я сделал это на своем пути иэто работает. Я реализовал этот метод, который фактически получает конкретный элемент из LinearLayoutManager, а затем получает данные из EditText.

    private List<Bet> getNewUserBets() {
        View betView;
        Bet betItem;
        EditText userBet1;
        EditText userBet2;

        int numberOfMatches = rvMatchesAdapter.getItemCount();
        List<Bet> bets = new ArrayList<>();

        for (int i = 0; i < numberOfMatches; i++)
        {
            betItem = rvMatchesAdapter.getItem(i);
            betView = linearLayoutManager.findViewByPosition(i);
            userScore1 = (EditText) betView.findViewById(R.id.result1);
            userScore2 = (EditText) betView.findViewById(R.id.result2);
            //here i checked whether the editText is empty and other stuff
            bets.add(betItem);
        }
        return bets;
    }

Но мне было интересно, удачно ли я сделал это. На мой взгляд есть два подхода:

  1. Отдельная логика. Реализуйте метод в Adapter (возможно, в onBindViewHolder), который получает данные от EditText (введенные пользователем). Так что логика в представлениях должна быть в Adapter. А в Activity просто вызовите этот метод (например, getAdatper().), когда пользователь нажимает кнопку сохранения. Так что Activity ничего не знает о представлениях (что происходит в Adapter).

  2. Как и я. Сделайте целую логику в Activity, что, на мой взгляд, хуже, чем подход, описанный под номером 1.

Так каким образом я должен решить эту задачу? И если 1 метод лучше, как я должен получить данные из EditText непосредственно из Adapter. Или, может быть, есть другой подход (решение), чтобы сделать это. Буду очень признателен за любую помощь.

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