首页 > 解决方案 > 合并回收站查看项目

问题描述

我正在尝试使同一类别下的所有项目都在同一个地方,但它会创建新的我尝试了很多选项我得到了同样的东西

这就是我得到的

我希望所有在行动的项目,例如这里是在一起而不是分开

   if (y != null) {
        //y is the category
        for (int i = 0; i <keyList.size(); i++) {
            //keyList is a set of firebase key under y
            ArrayList<BookDetails> itemArrayList = new ArrayList<>();
            reference.child(keyList.get(i)).addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    BookDetails bookDetails = dataSnapshot.getValue(BookDetails.class);
                    itemArrayList.add(bookDetails);

                    adapter.notifyDataSetChanged();



                }
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {}
            });

            sectionModelArrayList.add(new SectionBookModel(y, itemArrayList));

        }
    }

这是我的数据库的图像

这是结构

    {
  "Action" : {
    "-M5fYnj16773AVNYaMfE" : 
{
      "-M5fYqLScVzjMqw6xKsc" : true
    },
    "-M5jnhMoaXvnKt_Ide1y" : 
{
      "-M5jnitmW6pzFpZ6SKno" : true
    }
  },
  "Adventure" : {
    "-M5fYzWj5wX-TJdII0Ad" : 
{
      "-M5fZ-viqt0Dx4P1qeZR" : true
    }
  },
  "Biographies" : {
    "-M5n4DuadS8S_ENpwByp" : 
{
      "-M5n4GM89tADD980N1y8" : true
    }
  }
}

我真的很新,我不知道我做错了什么。谢谢

标签: androidfirebase-realtime-databasearraylistandroid-recyclerview

解决方案


我不确定你为什么要继续创建列表,列表必须在 for 循环之外:

这一行:

//must be outside the for loop to prevent recreating it
ArrayList<BookDetails> itemArrayList = new ArrayList<>();

推荐阅读