2017-08-07 8 views
0

私は、ユーザーがイメージを好きで好きなことができるアンドロイドアプリを持っています。私はrecyclerViewを使用しています。ユーザーがクリックするとボタン(Like/Unlike)を無効にします。問題点、私のようなボタンをクリックすると、アプリがメインの活動に行くなどは、私がやっていることとは異なりに変更されませんボタン:like likeボタンrecycler表示画像

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 

ハイアーは、私の見解ホルダー

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


        } 

       } 
      }); 

答えて

0

をイスト私はこの種の質問に何度も答えました。あなたは十分な検索をしておらず、ListViewやRecycleViewの動作を理解できていませんでした。ビューの現在の状態(TextViewのテキストの変更やImageViewのリソースの変更など)を変更することは間違っています。データセット(ListViewの項目に関連するリスト)が必要で、リストの対応するデータを変更して、アダプタのnotifyDataSetChanged()メソッドを呼び出す必要があります。

忘れないでください。リストの任意のビューが画面上に表示されるたびにgetView()メソッドが呼び出され、(データの変更ではなく)ビューのみが更新された場合、ビューにはデータが変更されなかったためitemの過去の値が表示されます。

以下のリンクを参照し、ListViewとRecycleViewの動作の詳細を検索してください。

How ListView's recycling mechanism works