2017-04-19 2 views
0

ich nur den entsprechenden Code teilen:FirebaseUI NoSuchMethodException:

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); 
    } 

Der Fehler:

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] 

Warum NoSuchMethodException? Ideen?

MIT FEST:

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); 
     } 
    } 

Antwort

1

Es ist wie Ihr GruposAdapter.ViewHolder scheint die erforderliche Konstruktor fehlt. Siehe https://github.com/firebase/FirebaseUI-Android/issues/46#issuecomment-167373575. Von dort:

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 { 
+0

Hallo, Sie haben Recht, mit der inneren Klasse wie statisch fixiert, aber warum? Warum brauche ich den Klassen-Viewholder? – josedlujan

+0

Weil Sie es als innere Klasse in einer anderen Klasse hinzugefügt haben. Java fügt solchen Klassen einen impliziten Feld- und Konstruktorparameter hinzu, um auf das enthaltende Objekt zu verweisen (z. B. verwenden Sie dies, wenn Sie in einem Click-Handler auf "MainActivity.this" verweisen). Das Hinzufügen von 'static' zur Klasse entfernt dieses Feld/Parameter. –

Verwandte Themen