2017-08-09 2 views
0

私はRecyclerViewです。 RecyclerViewの項目内のボタンをクリックすると、その項目のViewの色を変更したいと思います。以下は私のコードであり、正常に動作します。しかし、問題は、アイテムが醜いアニメーションを持つことになります。私はアニメーションなしでアイテムを更新したい。私はどうしたらいいですか?ちなみに、私はアニメーションをオフにしたくない、このクリックイベントのみ。アニメーションなしでRecyclerViewアイテムを更新するには?

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     public ImageView imageView; 
     public Button button; 

     public ItemViewHolder(View view) { 
      super(view); 
      //do something 
      button.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View view) { 
      //change color 
      notifyItemChanged(getAdapterPosition()); 
     } 
    } 
+1

あなたは 'notifyItemChanged(position、Object);を使用しようとしました –

+0

@RakshitNawaniあなたの答えが動作します! – Sam

+0

おかげさまでお疲れ様です! –

答えて

4

これは、我々はそれで私たちのオブジェクトを渡しているとして、それをアニメーション化することなく、位置を更新します。この

notifyItemChanged(position, Object); 

を試してみてください。

私に知らせてください。

+0

@Sam:お手伝いします。乾杯! –

+0

ありがとう、男!どういうわけか、このような小さなものや便利なことを知らなかった! –

0

以下のコードを使用して色を変更できます。

@Override 
    public void onClick(View view) { 
     //do something 

     //change color 

     holder.itemView.setBackgroundColor(Color.parseColor("#fafafa")); 

     notifyDataSetChanged(); 
    } 
+0

私は色を変更するのではなく、アニメーションを表示せずにアイテムを更新します。 – Sam

+0

は単純にnotifyDataSetChanged()を使用します。 –

0
+0

私の 'RecyclerView'には' getItemAnimator'がありません。私はそれが私が推測するすべてのアニメーションをオフにすると思う。 – Sam

+0

私の更新された回答を確認してください – Anil

0
recyclerView.getItemAnimator().setChangeDuration(0); 

それともこのため、この

csRecyclerView.getItemAnimator().setChangeDuration(0); 

を試してみてください。

+0

私の 'RecyclerView'に' getItemAnimator'メソッドがありません – Sam

+0

signleのライナーコードより多くの説明を入れてください。助けにならない – Adonis

+0

'getItemAnimator()'がバージョン ' 22.0.0' [Androidデベロッパー](https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#getItemAnimator()) – Alex

0

これを試してみてください:

public ItemViewHolder(View view) { 
        super(view); 
        //do something 
        button.setOnClickListener(new View.OnClickListener() 
        { 
         @Override 
         public void onClick(View v) 
         { 
          holder.itemView.setBackgroundColor(Color.parseColor("#000000")); 

       notifyDataSetChanged(); 

        });; 
       } 
} 
+0

私はこれがなくアイテムを更新するとは思わないアニメーション。 – Sam

+0

これを一度試してみてください。問題がある場合は教えてください。私は自分の答えを更新します。 –

関連する問題