2017-08-07 7 views
0

J'ai une application Android dans laquelle les utilisateurs peuvent aimer et contrairement à une image.J'utilise recyclerView.I Juste désactiver le bouton (Like/contrairement) une fois cliqué par l'utilisateur. Problème, lorsque je clique sur le bouton comme, les applications vont à l'activité principale et le bouton Comme ne change pas à la différence de ce que je l'ai fait:comme contrairement recycleur boutonVoir l'image

1) layout that holds the each recycler view layout item 

2) A view holder for creating each layout 

3) A Model Class to holds the data 

4) Recycler Adaptor which deals with the data for the Each Layout item 

Yesterday ist mon porte vue

//Initializing Views 
     public ViewHolder(View itemView) { 
      super(itemView); 
      imageView = (NetworkImageView)  itemView.findViewById(R.id.imageViewHero); 
      textViewName = (TextView) itemView.findViewById(R.id.textViewName); 
      //textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher); 
      likeImageView = (ImageView) itemView.findViewById(R.id.likeImageView); 
      likeImageView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 


        int id = (int)likeImageView.getTag(); 
        if(id == R.drawable.ic_like){ 

         likeImageView.setTag(R.drawable.ic_liked); 
         likeImageView.setImageResource(R.drawable.ic_liked);      

        }else{ 

         likeImageView.setTag(R.drawable.ic_like); 
         likeImageView.setImageResource(R.drawable.ic_like);    


        } 

       } 
      }); 

Répondre

0

I répondu à ce type de questions encore et encore. Vous n'avez pas effectué suffisamment de recherches et vous n'avez pas compris comment fonctionne ListView ou RecycleView. Changer l'état actuel des vues (comme changer le texte de TextView ou changer la ressource de ImageView) est une mauvaise chose. Vous avez besoin d'un ensemble de données (une liste liée aux éléments dans ListView) et vous devez modifier les données correspondantes de la liste et appeler la méthode notifyDataSetChanged() de votre adaptateur.

Ne pas oublier. La méthode getView() de votre adaptateur est appelée chaque fois qu'une vue de votre liste apparaît à l'écran et si vous mettez à jour uniquement la vue (au lieu de modifier les données), votre vue affiche la valeur passée de l'élément car vos données n'ont pas changé.

Regardez le lien ci-dessous et cherchez beaucoup plus sur le fonctionnement de ListView et de RecycleView.

How ListView's recycling mechanism works