我有一个Activity
,其中有一个RecyclerView
,然后保存Button
。 RecyclerView
的每个项目(足球比赛)都包含一些文本(球队名称)和EditText
,用户在其中输入数据(实际上输入比赛的得分)。我的目标是当用户单击“保存”按钮时将这些乐谱保存到Activity
中的列表中。
[我读了类似的问题(How can I return data from a RecyclerView adapter?),区别在于我需要从editText而不是从checkBox获取数据(这很容易通过onBindViewHolder
中的Adapter
方法中的clickListeners检查)]
所以我在途中成功完成了。我实现了此方法,该方法实际上是从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
中的数据。或者,也许还有另一种方法(解决方案)可以做到这一点。我将非常感谢您的帮助。
[我发现在TextWatcher
的更改时,更容易在ViewHolder
的Adapter
方法中使用EditText
,该方法从EditText
获取数据。将此数据添加到投注的ArrayList
中的Adapter
,然后在Activity
]中使用此ArrayList(公共)