【问题标题】:android Firebase display all data based on category chosenandroid Firebase 根据选择的类别显示所有数据
【发布时间】:2021-02-17 19:58:43
【问题描述】:

在我的项目中,我希望用户能够点击他们选择的类别,一旦点击它就会将他们带到一个页面,他们将看到属于他们选择的那个类别的所有帖子。例如,如果他们为自己的类别选择爱,那么它将显示属于爱类别的所有帖子。我正在尝试我想到的这段代码,但我认为它不是正确的方法。我确实运行了我的代码,但没有收到任何错误,但也没有得到任何结果。我很迷失在这里。有人能帮我吗?我会告诉你我的代码提前谢谢

databaseReference = FirebaseDatabase.getInstance().getReference().child("posts");

    Intent intent1 = getIntent();
    intent1.getStringExtra("name");
    String c=intent1.toString();
    
     databaseReference.equalTo(c).addValueEventListener(new ValueEventListener() {


    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        if(dataSnapshot.exists()){
            myUploads.clear();
            DialogUtil.closeProgressDialog();

            for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
                for (DataSnapshot postsnapshot : userSnapshot.getChildren()) {
                    Model_Information upload=postsnapshot.getValue(Model_Information.class);
                    myUploads.add(upload);
                    recyclerView.invalidate();
                }
            }
            linearLayoutWithoutItems.setVisibility(View.GONE);
            recyclerView.setVisibility(View.VISIBLE);

            aAdapter.notifyDataSetChanged();
        }else{
            DialogUtil.closeProgressDialog();
            linearLayoutWithoutItems.setVisibility(View.VISIBLE);
            recyclerView.setVisibility(View.GONE);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Toast.makeText(Explore_For_Categories.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();
    }
});

//This is the firebase json

{
  "Posts" : {
    "2WO5Gyk17LTzoifYdDBnBFmzYOV2" : {
      "-MThtE88y20_skyy0kk3" : {
        
        "category" : "love",
        "clicks" : 0,
        "created" : "2-17-2021",
        "body" : "Love is powerful",
        "id" : "-MThtE88y20_skyy0kk3",
        "mImageUrl" : "https://firebasestorage.googleapis.com/v0/b/flute-43191.appspot.com/o/.jpg?alt=media&token=2efcc398-d299-460c-9a16-4bf2e10d36f4",
        "main_id" : "-MThtE88y20_skyy0kk3",
        "time" : "10:49 AM",
        "timestamp" : 1613530198742,
        "views" : 0,
        
      }

【问题讨论】:

  • 您能否从 firebase 获得“爱”类别的结果?
  • @akhilnair 不,我没有得到任何结果
  • 我想您需要检查带有“love”的帖子在火力库中的相关性。可能是通过“main_id”。
  • 是的,但我如何从 Main_id 获取
  • 您的代码缺少很多行,请发布完整的代码,如数据库参考初始化

标签: android firebase


【解决方案1】:

我觉得问题出在这里,试试这个

Intent intent1 = getIntent();
String c = intent1.getStringExtra("name");

然后将其传递给 firebase 参数

databaseReference.equalTo(c).addValueEventListener(new ValueEventListener(){}

在意图之后添加一个以检查该意图不为空:

编辑

Intent intent1 = getIntent(); 
String c = intent1.getStringExtra("name"); 
Log.d(TAG, "EXTRA_STRING = " + c); 

onDataChanged() 之后的另一个

@Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { Log.d(TAG, "onDataChange"); 
... } 

现在在 firebase 上添加项目并跟踪是否有意图以及是否在您的参考上发生了侦听器

【讨论】:

  • 尝试添加日志语句来追踪错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2017-02-24
  • 1970-01-01
  • 2020-10-18
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多