当前位置: 首页 > 知识库问答 >
问题:

如何从Firebase实时数据库中获取用户列表?

郝君博
2023-03-14

我需要一些与Firebase实时数据库请求的帮助。

我想实现一些类似搜索屏幕,将显示所有用户,但我有一个问题,从Firebase检索数据。

下面是向Firebase发送请求的方法。

public MutableLiveData<List<SearchedUser>> getSearchedUsersMutableLiveData() {

        user.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                    mSearchedUser.add(dataSnapshot.getValue(SearchedUser.class));
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Log.d("myDebug", "onCancelled: ");
            }
        });
        mSearchedUsersMutableLiveData.setValue(mSearchedUser);
        return mSearchedUsersMutableLiveData;
    }
public class SearchedUser {

    private String mUserName;
    private String mUserEmail;
    private String mUserUid;

    public SearchedUser() {
    }

    public String getUserName() {
        return mUserName;
    }

    public void setUserName(String mUserName) {
        this.mUserName = mUserName;
    }

    public String getUserEmail() {
        return mUserEmail;
    }

    public void setUserEmail(String mUserEmail) {
        this.mUserEmail = mUserEmail;
    }

    public String getUserUid() {
        return mUserUid;
    }

    public void setUserUid(String mUserUid) {
        this.mUserUid = mUserUid;
    }
}

datasnapshot.getchildrencount()检索用户计数。

有人能解释我该怎么办?

共有1个答案

云胤
2023-03-14
public MutableLiveData<List<SearchedUser>> getSearchedUsersMutableLiveData() {

        user.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                    mSearchedUser.add(dataSnapshot.getValue(SearchedUser.class));
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Log.d("myDebug", "onCancelled: ");
            }
        });
        mSearchedUsersMutableLiveData.setValue(mSearchedUser);
        return mSearchedUsersMutableLiveData;
    }

您首先返回值,而firebase方法仍在从数据库中获取值,因此它将始终为空。

根据我的观点,您应该在for循环之外的“onDataChange”方法中设置适配器,并且总是获取数据并填充列表。

 类似资料:
  • 我有一个带有此模式的数据库: 我测试了这段代码,但我无法从数据库中获得任何消息。我会感谢你的帮助。

  • 我正在尝试读取我的Flutter应用程序中的firebase实时数据库中的数据,并将其分配给模型类,但是,我在控制台中得到了以下错误。 下面是我到目前为止所做的代码 员工类别 我不知道我做错了什么,请帮我解决这个问题

  • 我从一个开发人员那里得到了一个基于Firabase Realtime DB的Ionic应用程序的代码。当尝试启动应用程序时,im会收到此错误消息。 [ng]src/app/data-service.service.ts(14,36)中出现错误:错误TS2339:类型“{apikey:String;authDomain:String;databaseUrl:String;ProjectId:Stri

  • 我正在尝试获取我的用户名,并在应用程序打开时向他/她问好。但我无法根据某个用户的uid获取数据。当我运行应用程序时,祝酒词从未真正出现。 数据库结构 密码

  • 我试图在我的应用程序中创建一个搜索功能,它基本上根据用户的查询(如任何产品名称)过滤json数据(如产品列表),并显示最接近的结果。我已经成功实现了这个搜索栏和过滤逻辑,但它是在我的应用程序中我的产品列表的本地json数据上工作的。我想要的是从网络调用(http调用)中获取json数据,然后进行过滤。但是我的实时数据库中有数据,我不知道如何以json格式检索它们。我可以设置云函数(节点js)来将j