簡體   English   中英

如何在沒有動畫的情況下更新 RecyclerView 項目?

[英]How to update RecyclerView item without animation?

我有一個RecyclerView 當我單擊RecyclerView某個項目內的按鈕時,我想更改該項目中View的顏色。 以下是我的代碼,它工作正常。 但是,問題是該項目會有一個丑陋的動畫。 我想更新沒有動畫的項目。 我該怎么做? 順便說一下,我不想關掉動畫,只針對這個點擊事件。

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

試試這個

notifyItemChanged(position, Object);

當我們在其中傳遞對象時,這將更新位置而不對其進行動畫處理。

試試這個,讓我知道。

對於Kotlin您可以使用

notifyItemChanged(int position, @Nullable Object payload)

根據Rakshit 的回答,在Kotlin 1.2 中,以下代碼可以正常工作:

notifyItemChanged(position, Unit)
recyclerView.getItemAnimator().setChangeDuration(0);

或者這個。

有一種專門的方法可以禁用僅更改項目的動畫:

((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);

參考: https : //developer.android.com/reference/androidx/recyclerview/widget/SimpleItemAnimator

試試這個

csRecyclerView.getItemAnimator().setChangeDuration(0);

更多信息RecyclerView.ItemAnimator

在 kotlin 中:recyclerView.itemAnimator = null

在 Java 中:recyclerView.setItemAnimator(null);

開發人員說:一個空返回值表示沒有動畫師,項目更改將在沒有任何動畫的情況下發生。

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#getItemAnimator()

試試這個:

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

                    });;
                }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM