后更改我有一个Recyclerview那里有一个按钮onclicklistener在viewholder构造:Recyclerview按钮状态onBindViewHolder
public ViewHolder(View itemView)
{
super(itemView);
...
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
...
}
}
}
每个项目也有一个倒计时,每一秒倒计时递减和项目的进度被更新以显示剩下的时间。通过所有的项目
countdownHandler.postDelayed(countdownRunnable, 1000);
然后迭代,递减倒计时,并通知适配器: 定时器与一个可运行做
countdownRunnable = new Runnable()
{
@Override
public void run()
{
Iterator<Item> iterator = countdownTasks.iterator();
while (iterator.hasNext())
{
item.decrementCountdown();
adapter.notifyItemChanged(items.indexOf(item));
}
if (countdownTasks.size() > 0)
countdownHandler.postDelayed(countdownRunnable, 1000);
}
}
这里是我的问题,它也会发生,如果有只有一个项目在列表中。 我按下按钮并处于按下状态,但倒计时更新触发时,按钮不再按下。释放按钮不会按照它应该激活按钮。如果我删除倒计时,它会正常工作。
我不更改onBindViewHolder中的按钮,因为只有一个项目,所以我不滚动。这是预期的行为,只要notifyItemChanged被调用,或者我做错了什么,所有按钮按钮都会被取消?这甚至可以与onClickListener一起工作,还是需要onTouchListener,并将项目中的触地状态保存并每次更新都重置?
谢谢!
编辑: 我发现,如果我设置
recyclerView.setItemAnimator(null);
它的工作原理没有问题。有没有人知道为什么会这样,以及如何在没有记住所有状态的麻烦的情况下仍然可以获得动画?