Я вижу логическую проблему в вашем коде.Это часть проблемы создания кода.
Intent intent = new Intent(context, Categories.class);
String items[] = new String[models_list.size()];
for(int j=0; j< items.length; j++) {
intent.putExtra("category_name", models_list.get(i).Category_Name);
intent.putExtra("category_id", models_list.get(i).Category_ID);
intent.putExtra("subCatName", models_list.get(i).Sub_Cat_Name);
intent.putExtra("subcatID", models_list.get(i).Sub_Cat_ID);
intent.putExtra("Article_ID", models_list.get(i).Article_ID);
intent.putExtra("Article_Number", models_list.get(i).Article_Number);
intent.putExtra("ArticleWSP", models_list.get(i).ArticleWSP);
intent.putExtra("department_name", models_list.get(i).Department_Name);
}
context.startActivity(intent);
Здесь вы инициализируете массив строк items размером size_list **. Это не имеет смысла.Ваш размер массива должен иметь размер ** Доступная категория И здесь определенно никто не знает, как долго будет последний с категория Длинна model_list Может иметь любое количество подходящихкатегория .Итак, простой массив не очень хорошая идея.Вам нужно использовать ArrayList.ArrayList пользовательского режима.Здесь пользовательская модель будет режимом вашей категории. Как упомянуто ниже
List<CategoryModel> categoryList = new ArrayList();
И даже по щелчку, вам необходимо определить позицию, по которой нажимается элемент позиции.И тогда вам нужно получить объект модели этой позиции.И после получения модели вам нужно найти актуальную категорию.А с категорией вам нужно выбрать одно свойство, например, 'name или id' этой категории .Теперь это будет ваша точка фильтра.Теперь отфильтруйте ваш model_list (если это список, который также содержит вашу категорию. Как я вижу, это список отделов. Если этот список отделов также содержит категории, то вам нужно использовать список для фильтрации списка).Для фильтрации необходимо использовать приведенный ниже код.
Intent intent = new Intent(context, Categories.class);
List<CategoryModel> categoryList = new ArrayList<>();
//you need to get position of clicked item and that is stored in variable 'i'
Department_model selectedModel = model_list.get(i);
//here you have option you can filter with or the id let's suppose you are filtering with name then
// get name of category
String filterTag = selectedModel.Category_Name;
for(int j=0; j< model_list.size(); j++) {
//you need make category model with getter and setter properties
if (filterTag.equalsIgnoreCase(selectedModel.Category_Name)) {
CategoryModel currentCategory = new CategoryModel();
currentCategory.set(Category_Name);
currentCategory.set(Category_ID);
currentCategory.set(Sub_Cat_Name);
currentCategory.set(Sub_Cat_ID);
currentCategory.set(Article_ID);
currentCategory.set(Article_Number);
currentCategory.set(ArticleWSP);
currentCategory.set(Department_Name);
//here you have mapped category stuff in category model now you need to add in the list
categoryList.add(currentCategory);
}
}
Log.e("list_size",categoryList.size() );
//after loop, you need to pass "categoryList" to the next activity and then use the same categoryList
//to new activity of category adapter and now you are done ... phewww
//you can use below code to pass list via intent
Bundle args = new Bundle();
args.putSerializable("ARRAYLIST",(Serializable)categoryList);
intent.putExtra("BUNDLE",args);
context.startActivity(intent);
В Категория Activity метод onCreate () Используйте приведенный ниже код
Intent intent = getIntent();
Bundle args = intent.getBundleExtra("BUNDLE");
List<CategoryModel> list = args.getSerializable("ARRAYLIST");
И теперь все готово, делайте все, что вамхочу сделать с этим списком.
обновить после окончания цикла, я проверяю размер списка.вам нужно проверить размер и, пожалуйста, дайте мне знать