firebase recyclerview 给出了一个无法追踪的错误
firebase recyclerview gives an untraceble error
我正在尝试使用 firebase 数据库制作一个 recyclerview,这就是我创建它的方式
public RecyclerView main;
FirebaseRecyclerAdapter<subject, subjectHolder> mainadapter;
main = (RecyclerView) findViewById(R.id.recyclerview_subject_list);
main.setHasFixedSize(true);
main.setLayoutManager(new LinearLayoutManager(this));
mainadapter = new FirebaseRecyclerAdapter<subject, subjectHolder>(subject.class,R.layout.recyclerview_subject_item,subjectHolder.class, FirebaseDatabase.getInstance().getReference().child("subjets").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("physics")) {
@Override
protected void populateViewHolder(subjectHolder viewHolder, subject model, int position) {
viewHolder.subject.setText(model.getSubject());
viewHolder.teacher.setText(model.getTeacher());
}
};
main.setAdapter(mainadapter);
但是收到如下错误
java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View]
at com.firebase.ui.database.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:165)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5779)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5003)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3260)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3069)
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1505)
at android.support.v7.widget.RecyclerView.access0(RecyclerView.java:151)
at android.support.v7.widget.RecyclerView.run(RecyclerView.java:305)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:814)
at android.view.Choreographer.doCallbacks(Choreographer.java:614)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:800)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodException: <init> [class android.view.View]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getConstructor(Class.java:446)
at com.firebase.ui.database.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:162)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5779)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5003)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3260)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3069)
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1505)
at android.support.v7.widget.RecyclerView.access0(RecyclerView.java:151)
at android.support.v7.widget.RecyclerView.run(RecyclerView.java:305)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:814)
at android.view.Choreographer.doCallbacks(Choreographer.java:614)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:800)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
这是我的数据库
**考虑到 98794656 是用户 UID
*homework 分支也应该是回收视图
这里是我内心的 类 主题和 subjectHolder
public class subject{
public String subject, teacher;
public subject(String subject, String teacher) {
this.subject = subject;
this.teacher= teacher;
}
public subject() {
this.subject = "subject";
this.teacher= "teacher";
}
}
public class subjectHolder extends RecyclerView.ViewHolder {
public TextView subject , teacher;
public View view;
public subjectHolder (View itemView) {
super(itemView);
view = itemView;
subject = (TextView) itemView.findViewById(R.id.textview_subject_item_subject);
teacher= (TextView) itemView.findViewById(R.id.textview_subject_item_teacher);
}
}
我尝试重建、清理项目,
我总是那样做
问题是因为主体有内在小孩(作业)吗?
同样在 subject_item 布局中有用于作业的 recyclerview,但我还没有对它做任何事情。
*我之前已经不止一次正确地使用过它,但是在简单的数据中不是另一个里面的 recyclerview
知道如何解决吗?!谢谢
ViewHolder 类 需要 public。如果它们是嵌套的,它们也必须是静态的
public class subjectHolder extends RecyclerView.ViewHolder {
需要:
public static class subjectHolder extends RecyclerView.ViewHolder {
我正在尝试使用 firebase 数据库制作一个 recyclerview,这就是我创建它的方式
public RecyclerView main;
FirebaseRecyclerAdapter<subject, subjectHolder> mainadapter;
main = (RecyclerView) findViewById(R.id.recyclerview_subject_list);
main.setHasFixedSize(true);
main.setLayoutManager(new LinearLayoutManager(this));
mainadapter = new FirebaseRecyclerAdapter<subject, subjectHolder>(subject.class,R.layout.recyclerview_subject_item,subjectHolder.class, FirebaseDatabase.getInstance().getReference().child("subjets").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("physics")) {
@Override
protected void populateViewHolder(subjectHolder viewHolder, subject model, int position) {
viewHolder.subject.setText(model.getSubject());
viewHolder.teacher.setText(model.getTeacher());
}
};
main.setAdapter(mainadapter);
但是收到如下错误
java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View]
at com.firebase.ui.database.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:165)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5779)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5003)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3260)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3069)
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1505)
at android.support.v7.widget.RecyclerView.access0(RecyclerView.java:151)
at android.support.v7.widget.RecyclerView.run(RecyclerView.java:305)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:814)
at android.view.Choreographer.doCallbacks(Choreographer.java:614)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:800)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodException: <init> [class android.view.View]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getConstructor(Class.java:446)
at com.firebase.ui.database.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:162)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5779)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5003)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3260)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3069)
at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1505)
at android.support.v7.widget.RecyclerView.access0(RecyclerView.java:151)
at android.support.v7.widget.RecyclerView.run(RecyclerView.java:305)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:814)
at android.view.Choreographer.doCallbacks(Choreographer.java:614)
at android.view.Choreographer.doFrame(Choreographer.java:583)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:800)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
这是我的数据库
**考虑到 98794656 是用户 UID
*homework 分支也应该是回收视图
这里是我内心的 类 主题和 subjectHolder
public class subject{
public String subject, teacher;
public subject(String subject, String teacher) {
this.subject = subject;
this.teacher= teacher;
}
public subject() {
this.subject = "subject";
this.teacher= "teacher";
}
}
public class subjectHolder extends RecyclerView.ViewHolder {
public TextView subject , teacher;
public View view;
public subjectHolder (View itemView) {
super(itemView);
view = itemView;
subject = (TextView) itemView.findViewById(R.id.textview_subject_item_subject);
teacher= (TextView) itemView.findViewById(R.id.textview_subject_item_teacher);
}
}
我尝试重建、清理项目, 我总是那样做
问题是因为主体有内在小孩(作业)吗?
同样在 subject_item 布局中有用于作业的 recyclerview,但我还没有对它做任何事情。
*我之前已经不止一次正确地使用过它,但是在简单的数据中不是另一个里面的 recyclerview
知道如何解决吗?!谢谢
ViewHolder 类 需要 public。如果它们是嵌套的,它们也必须是静态的
public class subjectHolder extends RecyclerView.ViewHolder {
需要:
public static class subjectHolder extends RecyclerView.ViewHolder {