我有一个包含edittext的Recyclerview,当在RecyclerView外面按下一个按钮时,我想从RecyclerView中的每个视图中检索文本。但是我似乎无法找到最好的方法。我曾尝试使用回调,并且还尝试过外部类来存储数据,但两种方式看起来都应该可以工作,但两者都没有多少运气。从每个edittext文件中提取文本的最佳做法是什么,以便它可以添加到数组或数据库中。
答案 0 :(得分:7)
在循环视图,列表视图等中,有一个视图回收机制来减少内存消耗。
因此,简单地遍历循环视图子项将不会为您提供整个数据。
例如,如果循环视图中有10个项目,并且屏幕上显示5个项目,那么如果您继续遍历循环视图子项,则只会获得与少数子项相关联的数据,例如6或7。因为对于其他人来说,视图将被重用。
因此,在您的情况下,您需要做的是在回收视图适配器中重新使用视图时将数据从edittext保存到模型或bean类。单击该按钮时,您可以遍历子项并获取数据并将该数据再次放入模型或bean类。然后从bean列表中,您可以获得整个编辑过的数据。
答案 1 :(得分:5)
您可以使用以下内容检索项目:
ArrayList<String> list = new ArrayList<>(); //this list will hold the Strings from the adapter Views
for (int i = 0 ; i < yourRecycle.getChildCount(); i++){
list.add(((EditText)yourRecycle.getChildAt(i)).getText().toString());
}