-2

bien im faire une vue recycleur avec une base de données sur Firebase. Cela fonctionne parfaitement ... maintenant je veux mettre en œuvre un bouton de partage, mais je ne peux pas faire la référence du bouton chaque img. j'ai trouvé un tutoriel pour le faire, mais lorsque je tente de mettre en œuvre cette ligne (si je le supprimer les applications va bien, mais DOEST référence à la position du bouton)Bouton Ajouter à FirebaseUI ViewHolder

public BlogViewHolder(View itemView) {  
      ... 
      button = (Button)mView.findViewById(R.id.share); 
       ... 

les application se bloque lorsque j'ouvre l'activité im seulement utiliser des toasts pour tester.

public class NoticiasActivity extends AppCompatActivity { 

    private RecyclerView mBlogList; 
    FirebaseDatabase database; 
    DatabaseReference myRef; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_noticias); 

     //Recycler View 
     mBlogList = (RecyclerView)findViewById(R.id.blog_list); 
     mBlogList.setHasFixedSize(true); 
     mBlogList.setLayoutManager(new LinearLayoutManager(this)); 

     // Send a Query to the database 
     database = FirebaseDatabase.getInstance(); 
     myRef = database.getReference("Data"); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 

     FirebaseRecyclerAdapter<ModelClass, BlogViewHolder> firebaseRecyclerAdapter = 
       new FirebaseRecyclerAdapter<ModelClass, BlogViewHolder>(
         ModelClass.class, 
         R.layout.design_row, 
         BlogViewHolder.class, 
         myRef) { 



        @Override 
        protected void populateViewHolder(BlogViewHolder viewHolder, ModelClass model,int position) { 
         viewHolder.setTitle(model.getTitle()); 
         viewHolder.setImage(getApplicationContext(), model.getImage()); 
         viewHolder.button.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 
           Toast.makeText(view.getContext(), "esto es un boton"+ view.getNextFocusUpId(), Toast.LENGTH_SHORT).show(); 

          } 
         }); 
        } 
       }; 
     mBlogList.setAdapter(firebaseRecyclerAdapter); 
    } 
    //View Holder For Recycler View 
    public static class BlogViewHolder extends RecyclerView.ViewHolder { 
     View mView; 
     Button button ; 

     public BlogViewHolder(View itemView) { 

      super(itemView); 
      button = (Button)mView.findViewById(R.id.share); 





      mView= itemView; 

      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // click en la imagen hace algo 
        //añadir luego 
        Toast.makeText(v.getContext(), "hola", Toast.LENGTH_SHORT).show(); 

       } 
      }); 

     } 
     public void setTitle(String title){ 
      TextView post_title = (TextView)mView.findViewById(R.id.titleText); 
      post_title.setText(title); 
     } 
     public void setImage(Context ctx , String image){ 
      ImageView post_image = (ImageView)mView.findViewById(R.id.imageViewy); 
      // We Need TO pass Context 
      Picasso.with(ctx).load(image).into(post_image); 
     }  
    } 
} 
+0

Vous devez ajouter Logcat à la question. https://stackoverflow.com/questions/23353173/unheureusement-myapp-has-stopped-how-can-i-solve-this –

Répondre

2

Vous devez changer ces lignes

button = (Button)mView.findViewById(R.id.share); 
mView= itemView; 

Ou trouver le bouton de la itemView

+0

ça marche ty mate, pouvez-vous m'expliquer pourquoi cela conduisait à un crash? –

+0

Il vous indique si vous avez lu le Logcat. C'est une exception NullPointerException. L'exception la plus courante en Java. –

+0

Étant donné que ce message a répondu à votre question, vous pouvez le marquer comme accepté en cochant la case à côté du message. –