Не удалось удалить повторяющееся значение из Android ArrayList - PullRequest
0 голосов
/ 05 января 2019

У меня есть база данных Firebase, поэтому я сделал запрос для получения изображений на основе запроса тега. Но после получения данных из базы данных, когда я пытаюсь добавить их в список массивов. Я даю мне двойное значение. Я не знаю, проблема ли это в firebase или java. image0 и изображение 1 добавляются дважды. Я попытался очистить дублирующее значение с помощью Hashset. Еще одна странная вещь: цикл повторяется только два раза, я проверил его с помощью счетчика. enter image description here

private void searchInWallpapers(){
    Query wallpaperquery = myRef.child("wallpapers").orderByChild("tag").equalTo(keyWord);
    wallpaperquery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            int i = 0;
            for (DataSnapshot eachImage : dataSnapshot.getChildren()) {
                ImageModelClass  data2 = new ImageModelClass(eachImage.child("imgUrl").getValue().
                        toString(),eachImage.child("like").getValue().toString(),eachImage.child("title").getValue().toString());
                resultList.add(data2);

            }

            Set<ImageModelClass> set = new HashSet<>(resultList);
            resultList.clear();
            resultList.addAll(set);
            imageListAdapter imageListAdapter = new imageListAdapter(search_result.this,resultList);
            resultRecycler.setAdapter(imageListAdapter);
            FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(search_result.this);
            layoutManager.setJustifyContent(JustifyContent.SPACE_AROUND);
            layoutManager.setFlexDirection(FlexDirection.ROW);
            resultRecycler.setLayoutManager(layoutManager);

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

1 Ответ

0 голосов
/ 05 января 2019

Кажется, что вы добавляете данные в свой список "resultList", не очищая его

вам нужно добавить код вроде

if (resultList == null)
        resultList = new ....
    else
        resultList.clear();

    int i = 0;
    for (DataSnapshot eachImage : dataSnapshot.getChildren()) {
        ImageModelClass data2 = new ImageModelClass(eachImage.child("imgUrl").getValue().
                toString(), eachImage.child("like").getValue().toString(), eachImage.child("title").getValue().toString());
        resultList.add(data2);
    }

тогда не нужно обрабатывать для удаления дублирующихся значений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...