後更改我有一個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);
它的工作原理沒有問題。有沒有人知道爲什麼會這樣,以及如何在沒有記住所有狀態的麻煩的情況下仍然可以獲得動畫?