我尝试了以下代码:
view.setEnabled(false);
myReqRecyclerView.setEnabled(false);
第一行禁用当前点击的 View 。单击一次后,我想将所有项目设置为不可单击,这样就不会发生双击。 第二行好像不行。
最佳答案
第一个简单选项
但实际上使用系统时间会很糟糕:
long mLastClickTime = 0;
youradapter.setOnItemClickListener(new youradapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000) {
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
....//your code
}
});
但为了干净的编程,我建议这样做:
有点棘手但同样简单
在你的Adapter中引入一个boolean变量,请注意viewHolder()和onBindViewHolder()方法:
private boolean clickable = true;
@Override
public void onBindViewHolder(@NonNull myAdapter.ViewHolder viewHolder, int position) {
if (!clickable){
viewHolder.cardView.setClickable(false);
} else {
viewHolder.cardView.setClickable(true);
}
//....
}
public void setClickable(boolean clickable) {
this.clickable = clickable;
myadapter.notifyDataSetChanged();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
CardView cardView;
public ViewHolder(View itemView, final myViewHolder.OnItemClickListener listener){
super(itemView);
//..
cardView = itemView.findViewById(R.id.cardView);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
listener.onItemClick(position);
}
}
}
});
}
}
并根据需要使用 myadapter.setClickable(state)
像这样:
youradapter.setOnItemClickListener(new youradapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
myadapter.setClickable(false);
....//your code
}
});
也许在你的 onResume() 中:
myadapter.setClickable(true);
关于android - 如何使 RecyclerView 项目不可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33951399/