我在 RecyclerView 中的复选框有一个奇怪的问题。
当我单击一次时,一切运行正常(移动和更改样式),但是当我单击两次(足够快)时,它将执行部分代码(仅向下移动并取消选中)。我想阻止它,但我不知道如何。
我从这里https://stackoverflow.com/a/16514644/10802597尝试了解决方案,但是它使情况变得更糟(也许我做错了方法)。
这是我的代码:
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int currentPosition = holder.getAdapterPosition();
if(isChecked){
FinalListItem finalItemBefore = finalListItems.get(currentPosition);
FinalListItem finalItemAfter = new FinalListItem(finalItemBefore.getName(), true);
finalListItems.remove(finalItemBefore);
finalListItems.add(finalItemAfter);
recyclerView.scrollToPosition(0);
holder.linearLayout.setBackgroundResource(R.drawable.listitem_green);
notifyItemMoved(currentPosition, getItemCount() - 1);
}
else{
finalListItems.get(currentPosition).setChecked(false);
notifyItemChanged(currentPosition);
}
}
});
答案 0 :(得分:0)
您可以使用
private long mLastClickTime = 0;
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000) {
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
在您的点击内,它将阻止另一次点击1秒钟
但是不要在您的复选框方法中使用它,因为从我可以看到它的适配器,所以请为整个行设置ID并将此方法放在行上单击。