recyclerView.getChildCount()每次都返回不同数量的子进程

时间:2016-07-01 13:41:41

标签: android android-recyclerview expandablerecyclerview

我创建了一个包含动态RecyclerView字段的EditText。编辑EditText字段中的值时,我需要在单击按钮时保存它们。我正在使用recyclerView.getChildCount()来获取每次都给出不同数字的子计数。

5 个答案:

答案 0 :(得分:12)

RecyclerView执行其名称所指示的内容。它回收了视图。假设您有1000个条目的列表,但在任何给定时间,其中3-4个条目显示在屏幕上。 RecyclerView的适配器始终包含所有这些子节点,因此调用recyclerView.getAdapter().getItemCount();将返回1000.

然而,RecyclerView仅保留一些显示的项目并且“显示”接近显示,因此recyclerView.getChildCount()将返回较小且非常量的值。对于大多数应用程序,您应该使用适配器提供的方法。

答案 1 :(得分:4)

RecyclerView的孩子你的意思是行数?

然后我会建议调用适配器的方法。拨打:

recyclerView.getAdapter().getItemCount();

答案 2 :(得分:0)

getItemCount()中有一个名为LayoutManager的方法,它可以准确地返回您需要的内容。基本上它完成了其他答案中的建议。

答案 3 :(得分:0)

嘿,如果我正确理解了您的问题,则您正在尝试在单击按钮时检索EditText中的值。 如果您要从所有可见的视图持有者中检索,请执行此操作

View v;
int itemCount = recyclerview.getChildCount();
for(int i = 0; i < itemCount; i++){
    v = recyclerview.getChildAt(i); /* assuming you have your EditText in a view group like LinearLayout*/
    EditText et = v.findViewById(R.id.my_text);
    String text = et.getText().toString()
    // todo process text
}

答案 4 :(得分:0)

我想您正在使用LinearLayoutManager来显示列表。它有一个名为findViewByPosition的好方法,