Android recyclerview子计数小于活动类中的arrayList大小
在我的活动课上,我得到了Recyclerview的孩子,比如:Android recyclerview子计数小于活动类中的arrayList大小,android,android-recyclerview,Android,Android Recyclerview,在我的活动课上,我得到了Recyclerview的孩子,比如: final int itemsCount = recly_list_lab.getChildCount(); 但它给了我7个项目的计数,但我有10个项目,然后如何在主要活动中获得10个项目 以下是获取recyclerView子项的my代码: final int itemsCount = recly_list_lab.getChildCount(); Log.e("itemsCount::",itemsCount+"")
final int itemsCount = recly_list_lab.getChildCount();
但它给了我7个项目的计数,但我有10个项目,然后如何在主要活动中获得10个项目
以下是获取recyclerView子项的my代码:
final int itemsCount = recly_list_lab.getChildCount();
Log.e("itemsCount::",itemsCount+"");
if (itemsCount != 0) {
try {
for (int i = 0; i <itemsCount; i++) {
final View viewtestcategoryname = recly_list_lab.getChildAt(i);
AutoCompleteTextView autoctv_testcategory = (AutoCompleteTextView) viewtestcategoryname.findViewById(R.id.autoctv_testcategory);
String TestCategoryName = autoctv_testcategory.getText().toString();
Log.e("TestCategoryname:",TestCategoryName);
AutofitRecyclerView grid_labreferal_checkboxes_test = (AutofitRecyclerView) viewtestcategoryname.findViewById(R.id.grid_labreferal_checkboxes_test);
final int itemcheckTestCount = grid_labreferal_checkboxes_test.getChildCount();
Log.e("itemcheckTestCount:",itemcheckTestCount+"");
RecyclerView recly_testsubcategory = (RecyclerView) viewtestcategoryname.findViewById(R.id.recly_testsubcategory);
final int itemSubCategoryName = recly_testsubcategory.getChildCount();
Log.e("itemSubCategoryName:",itemSubCategoryName+"");
for (int test_check = 0; test_check < itemcheckTestCount; test_check++) {
final View viewTestCheck = grid_labreferal_checkboxes_test.getChildAt(test_check);
CheckBox grid_labreferal_checkbox = (CheckBox) viewTestCheck.findViewById(R.id.grid_labreferal_checkbox);
TextView txt_item_id = (TextView) viewTestCheck.findViewById(R.id.txt_item_id);
if (grid_labreferal_checkbox.isChecked()) {
Log.e("%sgrid_lcheckbox", grid_labreferal_checkbox.getText().toString());
if (txt_item_id != null && txt_item_id.getText().toString().trim().length() != 0) {
}
}
}
for (int subcatname = 0; subcatname< itemSubCategoryName; subcatname++){
final View SubCategory = recly_testsubcategory.getChildAt(subcatname);
AutoCompleteTextView autoctv_testsubcategory = (AutoCompleteTextView) SubCategory.findViewById(R.id.autoctv_testsubcategory);
Log.e("subcategoryname::",autoctv_testsubcategory.getText().toString());
AutofitRecyclerView grid_labreferal_checkboxes_subtest= (AutofitRecyclerView) SubCategory.findViewById(R.id.grid_labreferal_checkboxes_subtest);
final int itemcheckSubtestCount = grid_labreferal_checkboxes_subtest.getChildCount();
Log.e("itemcheckTestCount:",itemcheckSubtestCount+"");
for (int test_check = 0; test_check < itemcheckSubtestCount; test_check++) {
// jsonObjectMulti = new JSONObject();
final View viewTestCheck = grid_labreferal_checkboxes_subtest.getChildAt(test_check);
CheckBox grid_labreferal_checkbox = (CheckBox) viewTestCheck.findViewById(R.id.grid_labreferal_checkbox);
TextView txt_item_id = (TextView) viewTestCheck.findViewById(R.id.txt_item_id);
if (grid_labreferal_checkbox.isChecked()) {
Log.e("%sgrid_subtestcheckbox", grid_labreferal_checkbox.getText().toString());
if (txt_item_id != null && txt_item_id.getText().toString().trim().length() != 0) {
//testUpload.put(txt_item_id.getText().toString().trim(), grid_labreferal_checkbox.getText().toString().trim());
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
final int itemscont=recly_list_lab.getChildCount();
Log.e(“itemsunt::”,itemsunt+“”);
如果(itemsCount!=0){
试一试{
对于(int i=0;i视图,recyler视图中的视图可能小于视图中的项目总数,因为视图将被回收和重用以显示多个项目
您可以使用adapter.getItemCount()方法了解recyler视图中将显示多少视图项。并非所有适配器项都附加到父项。getChildCount()
方法返回显示的视图数。如果您想获得适配器的项目数,必须查询适配器
final int itemsCount = recly_list_lab.getAdapter().getItemCount();
但是考虑到您的代码,您只是错过了使用RecyclerView
。您不应该直接访问回收器的子视图。您需要对其执行的所有操作都应该通过适配器和视图持有者来完成!RecyclerView不会保存内存中所有列表项的视图,例如,在您的情况下,它只有-7。W当你滚动时,它会重复使用这7个视图来显示不同的项目。目的是提高渲染性能。你能分享你的完整代码吗???@sumit你能给我你的电子邮件吗?你确定你有10个项目吗?@sumit是的,我的阵列中有10个项目。添加你的代码。谢谢你给我答案。但是如果我使用这种方法,那么我没有得到视图,它给了我一个错误null指针异常。我的代码是:我的适配器不是null