Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在尝试对RecyclerView和firebase使用搜索查询。运行应用程序时,recyclerview元素中不会显示任何内容_Java_Android_Firebase_Firebase Realtime Database_Android Recyclerview - Fatal编程技术网

Java 正在尝试对RecyclerView和firebase使用搜索查询。运行应用程序时,recyclerview元素中不会显示任何内容

Java 正在尝试对RecyclerView和firebase使用搜索查询。运行应用程序时,recyclerview元素中不会显示任何内容,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,搜索功能的代码。我有一个带有onclicklistener的按钮,它运行此函数并将edittext搜索输入作为参数传递。我之所以怀疑这个错误在这里,是因为我在youtube上找不到FirebaseRecyclerAdapter正确格式的共识。我想我从一个视频到另一个视频看到了FirebaseUI的不同版本。我试图查看firebasedatabase函数的当前文档,但仍然无法使其正常工作 当我按search时,我的应用程序将运行,但回收视图从未显示为已填充/填充。我想知道是不是我从数据库中读取的数

搜索功能的代码。我有一个带有onclicklistener的按钮,它运行此函数并将edittext搜索输入作为参数传递。我之所以怀疑这个错误在这里,是因为我在youtube上找不到FirebaseRecyclerAdapter正确格式的共识。我想我从一个视频到另一个视频看到了FirebaseUI的不同版本。我试图查看firebasedatabase函数的当前文档,但仍然无法使其正常工作

当我按search时,我的应用程序将运行,但回收视图从未显示为已填充/填充。我想知道是不是我从数据库中读取的数据不正确,还是我在定义适配器时出错了

public void firebaseUserSearch(String search) {
        ref = FirebaseDatabase.getInstance().getReference();
        Query firebaseSearchQuery = ref.orderByChild("name").startAt(search).endAt(search + "\uf8ff");

        FirebaseRecyclerOptions<UserProfile> options = new FirebaseRecyclerOptions.Builder<UserProfile>().setQuery(firebaseSearchQuery, UserProfile.class).build();

        FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<UserProfile, UsersViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull UserProfile model) {

                holder.setDetails(model.getName(), model.getAge(), model.getEmail());

            }

            @NonNull
            @Override
            public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout, parent, false);
                return new UsersViewHolder(view);
            }
        };

        rvMenteeList.setAdapter(firebaseRecyclerAdapter);
    }
我的模型类的代码

public class UserProfile {
    public String name;
    public String email;
    public String age;

    public UserProfile() {
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setAge(String age) {
        this.age = age;
    }


    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }

    public String getAge() {
        return age;
    }

    public UserProfile(String Name, String Email, String Age) {
        this.name = Name;
        this.email = Email;
        this.age = Age;
    }
}
我的数据库按此层次结构排序

thebloomapp-5426a
    DcehovJ6tRaHBdsau8IfjDcJfslny1
        age: "15"
        email: "trentjohnson505@gmail.com"
        name:  "kyle"

我解决了我的问题,我忘了在设置适配器的正上方添加这行代码。
firebaseRecyclerAdapter.startListening()
如果没有这一行,适配器将永远不会侦听数据库中的数据。我的搜索功能中的新更改如下所示

public void firebaseUserSearch(String search) {
        ref = firebaseDatabase.getReference();
        Query firebaseSearchQuery = ref.orderByChild("name").startAt(search).endAt(search + "\uf8ff");

        FirebaseRecyclerOptions<UserProfile> options = new FirebaseRecyclerOptions.Builder<UserProfile>().setQuery(firebaseSearchQuery, UserProfile.class).build();

        FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<UserProfile, UsersViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull UserProfile model) {

                holder.setDetails(model.getName(), model.getAge(), model.getEmail());

            }

            @NonNull
            @Override
            public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout, parent, false);
                return new UsersViewHolder(view);
            }
        };
        firebaseRecyclerAdapter.startListening();
        rvMenteeList.setAdapter(firebaseRecyclerAdapter);

    }
public void firebaseUserSearch(字符串搜索){
ref=firebaseDatabase.getReference();
查询firebaseSearchQuery=ref.orderByChild(“名称”).startAt(搜索).endAt(搜索+“\uf8ff”);
FirebaseRecyclerOptions选项=新建FirebaseRecyclerOptions.Builder().setQuery(firebaseSearchQuery,UserProfile.class).build();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(选项){
@凌驾
受保护的无效onBindViewHolder(@NonNull UsersViewHolder holder,int position,@NonNull UserProfile model){
holder.setDetails(model.getName()、model.getAge()、model.getEmail());
}
@非空
@凌驾
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
View=LayoutFlater.from(parent.getContext()).flate(R.layout.list\u布局,parent,false);
返回新的UsersViewHolder(视图);
}
};
firebaseRecyclerAdapter.startListening();
rvMenteeList.setAdapter(firebaseRecyclerAdapter);
}

您是否尝试将类中的字段设置为私有?堆栈溢出是一种效率极低的交互式调试器,因此最好在调试器中运行代码,并确定到底发生了什么(而不是只关注未发生的最终结果)。例如:如果您在
onCreateViewHolder
的第一行上放置一个断点,并在调试器中运行,那么它是否遇到过该断点?与onBindViewHolder相同
?如果是,那么
模型
是否包含来自数据库的用户数据?@Frankvanpoffelen我通过调试器运行了我的应用程序,FirebaseRecyclerAdapter中的所有内容,包括onBindViewHolder和onCreateViewHolder都被跳过,永远不会运行。至少它似乎从未在调试器中运行过。我甚至在onbind和oncreate方法中创建了日志,但它从未打印出这些日志。
public void firebaseUserSearch(String search) {
        ref = firebaseDatabase.getReference();
        Query firebaseSearchQuery = ref.orderByChild("name").startAt(search).endAt(search + "\uf8ff");

        FirebaseRecyclerOptions<UserProfile> options = new FirebaseRecyclerOptions.Builder<UserProfile>().setQuery(firebaseSearchQuery, UserProfile.class).build();

        FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<UserProfile, UsersViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull UserProfile model) {

                holder.setDetails(model.getName(), model.getAge(), model.getEmail());

            }

            @NonNull
            @Override
            public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_layout, parent, false);
                return new UsersViewHolder(view);
            }
        };
        firebaseRecyclerAdapter.startListening();
        rvMenteeList.setAdapter(firebaseRecyclerAdapter);

    }