Search code examples
androidfirebasefirebaseui

FirebaseUI NoSuchMethodException:


I just share the relevant code:

MainActivity:

 RecyclerView recyclerView;

        DatabaseReference databaseReference;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_todo);
        Firebase.setAndroidContext(this);


        databaseReference = FirebaseDatabase.getInstance().getReference();

        recyclerView = (RecyclerView) findViewById(R.id.list);
        recyclerView.setHasFixedSize(true);



        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(linearLayoutManager);





        FirebaseRecyclerAdapter<Grupo,GruposAdapter.ViewHolder> adapter =
                new FirebaseRecyclerAdapter<Grupo, GruposAdapter.ViewHolder>(
                    Grupo.class,
                        R.layout.item,
                        GruposAdapter.ViewHolder.class,
                        databaseReference.child("Grupos")


        ) {
            @Override
            protected void populateViewHolder(GruposAdapter.ViewHolder viewHolder, Grupo model, int position) {
                    viewHolder.id.setText(String.valueOf(model.getId()));
                    viewHolder.grupo.setText(model.getGroupname());
            }
        };



        recyclerView.setAdapter(adapter);
    }

The error:

04-19 14:50:52.886 22120-22120/datos.agregar.firebase.ejemplo.com.ejemploagregardatoscffirebase E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                                                  Process: datos.agregar.firebase.ejemplo.com.ejemploagregardatoscffirebase, PID: 22120
                                                                                                                  java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View]

Why NoSuchMethodException ? ideas?

FIXED WITH:

  public static class ViewHolder extends RecyclerView.ViewHolder{
        public TextView id,grupo;
        public CardView cardview;

        public ViewHolder(View itemView){
            super(itemView);

            id = (TextView) itemView.findViewById(R.id.idgrupo);
            grupo = (TextView) itemView.findViewById(R.id.grupo);
            cardview = (CardView) itemView.findViewById(R.id.cardview);
        }
    }

Solution

  • It seems like your GruposAdapter.ViewHolder is lacking the required constructor. See https://github.com/firebase/FirebaseUI-Android/issues/46#issuecomment-167373575. From there:

    There are two likely causes for this:

    • make sure that your TaskViewHolder class is public *if your TaskViewHolder is an inner class of e.g. your activity, make sure it's static

    So likely

    public static TaskViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {