【问题标题】:How to get value from Firebase to recycleView如何从 Firebase 获取价值到 recyclerView
【发布时间】:2020-09-14 09:55:33
【问题描述】:

this is a picture of firebase datathis is the image of log which i am getting in logcat

mDatabase=FirebaseDatabase.getInstance();
mRef=mDatabase.getReference("items").child("0").child("snippet");
mChildEventListner = new ChildEventListener() {

    @Override
    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
        for (DataSnapshot Snapshot : dataSnapshot.getChildren()) {
            CategoriesModelClass user = dataSnapshot.getValue(CategoriesModelClass.class);
            Log.d("kkk", "" + user);
            title_description.add(user);
        }
        categoriesRecycleView.notifyDataSetChanged();
    }

这是我来自activitymain 的代码,我不知道我应该触发标题和描述的查询还是它会从 for 循环中获取它?

这是我的模型类的代码

public class CategoriesModelClass {
    String title,description;

    public CategoriesModelClass(){

    }

    public CategoriesModelClass(String title, String description) {
        this.title = title;
        this.description = description;
    }

    public String getTitle() {
        return title;
    }

    public String getDescription() {
        return description;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

我尝试在我的回收视图中设置这些数据,我只需要标题和描述

【问题讨论】:

  • 向我们展示所有内容的屏幕截图,甚至是thumbnails。还向我们展示CategoriesModelClass 的课程@
  • 我更新了我的代码
  • 数据库的截图在哪里(暴露了所有的东西,甚至是thumbnails节点)?也给我播下适配器代码。
  • github.com/krushi-21/hello-world.git 这是github链接,所有文件都可以帮我检查
  • 直接将图片添加到问题中,而不是作为链接。

标签: java android firebase-realtime-database android-recyclerview


【解决方案1】:

要获取descriptiontitle的值,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference snippetRef = rootRef.child("items").child("0").child("snippet");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        CategoriesModelClass user = dataSnapshot.getValue(CategoriesModelClass.class);
        Log.d("kkk", "" + user.getTitle());

        //Get the values out of the user object
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
snippetRef.addListenerForSingleValueEvent(valueEventListener);

看,没有必要循环snippet节点,这是因为我们需要根据存储的对象类型来获取数据。

如果0节点中有多个项目,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference zeroRef = rootRef.child("items").child("0");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            CategoriesModelClass user = ds.getValue(CategoriesModelClass.class);
            Log.d("kkk", "" + user.getTitle());
        }

        //Get the values out of the user object
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
zero.addListenerForSingleValueEvent(valueEventListener);

【讨论】:

  • 没有错误出现,但我没有在回收视图中获取数据
  • Log.d("kkk", "" + user); 是否在 glocat 中打印某些内容?
  • 是 Log.d("kkk",""+user);打印 kkk 和“应用名称”categoriesmodelclass@325326
  • 是的,我尝试更新代码,但它给了我同样的错误
  • 我刚刚附上了它的图片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2016-10-17
  • 2021-12-07
  • 1970-01-01
  • 2017-12-21
相关资源
最近更新 更多