我有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());
}
}
答案 0 :(得分:12)
试试这个
notifyItemChanged(position, Object);
这将更新位置而不动画它,因为我们正在传递它的对象。
试试这个并告诉我。
答案 1 :(得分:3)
基于Rakshit's answer,在 Kotlin 1.2 中,以下代码可以正常工作:
notifyItemChanged(position, Unit)
答案 2 :(得分:1)
recyclerView.getItemAnimator().setChangeDuration(0);
或者这个。
答案 3 :(得分:1)
有一种专用方法可以禁用仅更改了项目的动画:
((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
参考号:https://developer.android.com/reference/androidx/recyclerview/widget/SimpleItemAnimator
答案 4 :(得分:0)
答案 5 :(得分: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();
});;
}
}
答案 6 :(得分:0)
在 kotlin 中:recyclerView.itemAnimator = null
在java中:recyclerView.setItemAnimator(null);
开发者说: null 返回值表示没有动画师,项目更改将在没有任何动画的情况下发生。