Android Firebase分页回收器适配器提供错误?
因此,我尝试使用Firebase Ui数据库通过分页适配器将数据检索到recycler视图。但我一直给我错误,坚持了一个多星期。我认为这个查询有错误 因此,模型类是用来检索数据的教师 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
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)