У меня есть 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;
}
Но мне было интересно, удачно ли я сделал это. На мой взгляд есть два подхода:
Отдельная логика. Реализуйте метод в Adapter
(возможно, в onBindViewHolder
), который получает данные от EditText
(введенные пользователем). Так что логика в представлениях должна быть в Adapter
. А в Activity
просто вызовите этот метод (например, getAdatper().
), когда пользователь нажимает кнопку сохранения. Так что Activity
ничего не знает о представлениях (что происходит в Adapter
).
Как и я. Сделайте целую логику в Activity
, что, на мой взгляд, хуже, чем подход, описанный под номером 1.
Так каким образом я должен решить эту задачу? И если 1 метод лучше, как я должен получить данные из EditText
непосредственно из Adapter
. Или, может быть, есть другой подход (решение), чтобы сделать это. Буду очень признателен за любую помощь.