Я пытаюсь получить данные из базы данных комнаты в arraylist, но он показывает только последнюю запись в Android - PullRequest
0 голосов
/ 24 мая 2019

У меня есть база данных номеров в Android. но когда я получаю данные из базы данных и показываю в расширяемом RecyclerView, он показывает только последние записи в моем дочернем списке. есть один ребенок ArrayList под родителем ArrayList.

Я добавляю данные из базы данных в hashmap в формате ключа и значения в ExpandableListView

        HashMap<String, List<Movies>> expandableListDetail = new HashMap<String, List<Movies>>();
        ArrayList<String> moviecategoriess = new ArrayList<>();

        for (int i = 0; i < tasks.size(); i++) {
            childDataItems = new ArrayList<>();
            String movieCategory = tasks.get(i).getMovieCategory();

            String moviename = tasks.get(i).getMovieName();

            String description = tasks.get(i).getMovieDescription();
            String bannerimage = tasks.get(i).getMovieImage();
            //   String maincat=expandableListDetail.get("").get(i).
            childDataItems.add(new Movies(moviename, bannerimage, description));

            expandableListDetail.put(movieCategory, childDataItems);
            moviecategoriess.add(movieCategory);
        }

        Iterator it = expandableListDetail.entrySet().iterator();

        final ArrayList<MovieCategory> movieCategories = new ArrayList();

        moviesArrayList = new ArrayList();
        while (it.hasNext()) {
            Map.Entry pairs = (Map.Entry) it.next();
            String name = pairs.getKey().toString();
            moviesArrayList = (ArrayList<Movies>) pairs.getValue();

            movieCategories.add(new MovieCategory(name, moviesArrayList));
        }
        moviesAdapter = new MoviesAdapter(MovieActivity.this, movieCategories);
        Functions.setDatatoRecyclerView(rv_movies_list, moviesAdapter, MovieActivity.this);
        moviesAdapter.notifyDataSetChanged();
    }

Я хочу показать данные в ArrayList, как это

Родительский предмет: Триллер

ChildItems в списке:

1) Force2

2) Саркар2

Родительский элемент: Действие

ChildItems в списке:

1) Граница

2) Поле битвы

1 Ответ

0 голосов
/ 24 мая 2019

В вашем случае проблема заключается в цикле for каждый раз, когда вы запускаете цикл, создается новый список массивов в соответствии с вашим кодом, поэтому просто замените код следующим:

HashMap<String, List<Movies>> expandableListDetail = new HashMap<String, List<Movies>>();
        ArrayList<String> moviecategoriess = new ArrayList<>();
childDataItems = new ArrayList<>();
        for (int i = 0; i < tasks.size(); i++) {
            String movieCategory = tasks.get(i).getMovieCategory();

            String moviename = tasks.get(i).getMovieName();

            String description = tasks.get(i).getMovieDescription();
            String bannerimage = tasks.get(i).getMovieImage();
            //   String maincat=expandableListDetail.get("").get(i).
            childDataItems.add(new Movies(moviename, bannerimage, description));

            expandableListDetail.put(movieCategory, childDataItems);
            moviecategoriess.add(movieCategory);
        }
...