Java 从Recyclerview中包含的editText内部获取文本

Java 从Recyclerview中包含的editText内部获取文本,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有一个包含edittext的Recyclerview,当在Recyclerview外部按下按钮时,我想从Recyclerview内的每个视图检索文本。然而,我似乎找不到最好的方法。我尝试过使用回调,也尝试过使用外部类来存储数据,但这两种方法似乎都应该有效,但都没有太多的运气。从每个edittext Indivdial中获取文本的最佳做法是什么,以便将其添加到数组或数据库中。您可以通过以下方式检索该项: ArrayList<String> list = new ArrayList&l

我有一个包含edittext的Recyclerview,当在Recyclerview外部按下按钮时,我想从Recyclerview内的每个视图检索文本。然而,我似乎找不到最好的方法。我尝试过使用回调,也尝试过使用外部类来存储数据,但这两种方法似乎都应该有效,但都没有太多的运气。从每个edittext Indivdial中获取文本的最佳做法是什么,以便将其添加到数组或数据库中。

您可以通过以下方式检索该项:

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());
}
ArrayList list=new ArrayList()//此列表将保存适配器视图中的字符串
for(int i=0;i
在循环视图、列表视图等中,有一个视图循环机制来减少内存消耗

因此,简单地遍历recycle view childs并不能提供完整的数据

例如,如果“循环视图”中有10个项目,并且屏幕上显示了5个项目,那么如果您在“循环视图”子项中进行迭代,您将只获得与少数子项相关的数据,例如6或7。因为对于其他人,视图将被重用


因此,在您的情况下,您需要做的是在循环视图适配器中重用视图时将数据从edittext保存到model或bean类。单击按钮后,您可以遍历child并获取数据,然后将该数据再次放入model或bean类。然后从bean列表中可以得到所有编辑的数据。

谢谢,这就是我要找的。注意@Eldhose M Babu回答,如果你的回收中有几个项目,这是非常重要的一点。如果不是所有的子项都可见,这是一个糟糕的解决方案。getChildCount()只返回可见子级的数目。所以,即使键盘会覆盖你的recyclerView的一部分,你也不会覆盖孩子们。