i am trying to make a recyclerview using firebase database and thats how i create it
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);
but an error is recieved as follows
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.access$400(RecyclerView.java:151)
at android.support.v7.widget.RecyclerView$1.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.access$400(RecyclerView.java:151)
at android.support.v7.widget.RecyclerView$1.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)
here is my database
**considering 98794656 is user UID
*homework branch is supposed to be recycler view too
and here goes both my inner classes subject and 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);
}
}
i tried to rebuild,clean the project, i always do it like that
is the problem caused because subject has an inner child (homework)?
also in subject_item layout there is recyclerview for homework but i didnt do anything to it yet.
*i already used it more than once correctly before but in simple data not recyclerview inside another one
any idea how to fix ?! thanks
ViewHolder classes need to be public. And if they are nested they have to be static as well
public class subjectHolder extends RecyclerView.ViewHolder {
need to be:
public static class subjectHolder extends RecyclerView.ViewHolder {