Android Firebase分页回收器适配器提供错误?

Android Firebase分页回收器适配器提供错误?,android,firebase,firebase-realtime-database,android-recyclerview,firebaseui,Android,Firebase,Firebase Realtime Database,Android Recyclerview,Firebaseui,因此,我尝试使用Firebase Ui数据库通过分页适配器将数据检索到recycler视图。但我一直给我错误,坚持了一个多星期。我认为这个查询有错误 因此,模型类是用来检索数据的教师 Firebase分页适配器: public class teacher_adapter extends FirebaseRecyclerPagingAdapter<TeachersHelper, teacher_adapter.ExampleViewHolder> { // variable

因此,我尝试使用Firebase Ui数据库通过分页适配器将数据检索到recycler视图。但我一直给我错误,坚持了一个多星期。我认为这个查询有错误

因此,模型类是用来检索数据的教师

Firebase分页适配器:

public class teacher_adapter extends FirebaseRecyclerPagingAdapter<TeachersHelper, teacher_adapter.ExampleViewHolder> {

    // variables to handle onclicks and dataloading
    private ProgressBar progressBar;
    private Context ctx;


    // constructor
    public teacher_adapter(@NonNull DatabasePagingOptions<TeachersHelper> options,
                           ProgressBar progressBar, Context ctx) {
        super(options);
        this.progressBar = progressBar;
        this.ctx = ctx;
    }

    @NonNull
    @Override
    public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_item, parent, false);

        return new ExampleViewHolder(view, mListener);
    }


    @Override
    protected void onBindViewHolder(@NonNull ExampleViewHolder holder, int position,
                                    @NonNull TeachersHelper model) {

        TeachersHelper currentItem = model;
 
        // setting image
        String imageLink = currentItem.getImage();
        
        // Image assigning
        if (currentItem.getImage().equals("No")) {
            holder.iconName.setImageResource(R.drawable.profilepicture);
        } else {
            Picasso.get().load(imageLink).into(holder.iconName);
        }
        holder.individualName.setText(currentItem.gettName());
        holder.departmentOrstudentstuff.setText(currentItem.gettDepartment());
    }

    @Override
    protected void onLoadingStateChanged(@NonNull LoadingState state) {
        switch (state) {
            case LOADING_INITIAL:
                // The initial load has begun
                // ...
            case LOADING_MORE:
                progressBar.setVisibility(View.VISIBLE);
                // The adapter has started to load an additional page
                // ...
            case LOADED:
                progressBar.setVisibility(View.GONE);

                // The previous load (either initial or additional) completed
                // ...
            case ERROR:
                StyleableToast.makeText(ctx, "Error Try Again", R.style.exampleToast).show();
                // The previous load (either initial or additional) failed. Call
                // the retry() method in order to retry the load operation.
                // ...
        }
    }

    public static class ExampleViewHolder extends RecyclerView.ViewHolder {
        public ImageView iconName;
        public TextView individualName;
        public TextView departmentOrstudentstuff;

        public ExampleViewHolder(View itemView, final teacher_adapter.OnItemClickListener listener) {
            super(itemView);
            iconName = itemView.findViewById(R.id.profilePic_listView);
            individualName = itemView.findViewById(R.id.studentsName_Listview);
            departmentOrstudentstuff = itemView.findViewById(R.id.student_Registrattion_listview);
        }
    }
}

这将导致加载适配器定义的数据TOAST时出错。

您正在创建的引用为:

FirebaseDatabase.getInstance()
            .getReference("Admin").child(mAuth.getUid()).child("INSTITUTE")
            .child("TEACHERS").child("TEACHERINFORMATION");
但是数据库中没有直接位于
教师
下的子
教师信息
,因此引用指向数据库中没有数据

我猜您希望适配器显示
教师
下的数据:

FirebaseDatabase.getInstance()
            .getReference("Admin").child(mAuth.getUid()).child("INSTITUTE")
            .child("TEACHERS");
然后,对于每个子节点,它应该显示
TEACHERINFORMATION
子节点。这意味着
TEACHERINFORMATION
需要是用于将
DataSnapshot
映射到应用程序代码的Java类的一部分

因此,如果当前的
TeachersHelper
包含
image
tDepartment
TEACHERINFORMATION
的其他属性,您可以为此创建一个包装类:

public class TeacherWrapper {
   @PropertyName("TEACHERINFORMATION")
   public TeachersHelper TEACHERINFORMATION;
}
将此类传递到适配器:

.setQuery(baseQuery, config, TeacherWrapper.class)

然后修改其他代码以从包装器中提取嵌套数据。

尝试使用简单的数据库体系结构。所做的是删除Teacherinformation节点,并开始在pushid下插入数据,结果很好。请注意,大多数人认为所有大写字母中的文字都是大喊大叫。相反,您可以编辑您的问题以显示运行此代码时收到的实际错误消息吗?抱歉,我只是想突出显示,它显示了onLoadingstate中的toast更改了从AdapterHey Kiran加载数据时的错误。你有什么收获吗?我试图在下面给出一个答案。你有机会检查一下吗,这有意义吗?如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样其他人就知道你得到了(足够的)帮助。也看不到,使用包装器类并不能解决问题。我所做的是删除了复杂的节点结构,即,我刚开始在教师节点下插入数据,并带有推送id。然后一切顺利。谢谢你,弗兰克
public class TeacherWrapper {
   @PropertyName("TEACHERINFORMATION")
   public TeachersHelper TEACHERINFORMATION;
}
.setQuery(baseQuery, config, TeacherWrapper.class)