延迟回收者查看每个项目的点击功能
Delay recyclerview every item click functionality
我有一个recyclerview
。我想实现一个功能,但我无法实现它。
我的 RecyclerView 项目有 2 textView
和一个 button
.
public class Task {
private String id;
private String title;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
所以让我解释一下。我的 recyclerView
项中的按钮使用 stateListDrawable
,因此点击后它变为 active/inactive。当用户点击一个按钮,它变为活动状态时,我必须将项目数据(标题、ID)发送到后端。当用户点击非活动按钮时,我向后端发送该项目的删除请求。但问题是用户可以多次点击同一个按钮,我不想每次都发送 make 请求。例如。我可以在一秒钟内按同一个按钮 4 次,它变成 active/inactive,所以我不想在一秒钟内发出 4-5 个请求。我认为,解决方案是在该点击事件上添加延迟,例如单击后 500 毫秒或 1000 毫秒后将数据发送到后端。我尝试使用 Handler
并且确实有效。例如。当我点击第 2 个、第 4 个和第 5 个项目时,每次点击一秒钟后,我可以将数据发送到后端。但是也有一个问题。当我多次点击同一个按钮时,一秒钟后它会向后端发送多个请求。在启动处理程序之前,我尝试在每次点击时执行 removeCallbacksAndMessages()
,但还有另一个问题。例如。当我多次点击第二项然后点击第三项时,我只将第三项数据发送到后端。但我想将第二和第三项数据发送到后端。那么谁能帮我实现这个功能?
private long mLastClickTime = 0;
...
// inside onCreate or so:
findViewById(R.id.button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// mis-clicking prevention, using threshold of 1000 ms
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000){
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
// do your magic here
}
}
详情请看这里:Android Preventing Double Click On A Button
我有一个recyclerview
。我想实现一个功能,但我无法实现它。
我的 RecyclerView 项目有 2 textView
和一个 button
.
public class Task {
private String id;
private String title;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
所以让我解释一下。我的 recyclerView
项中的按钮使用 stateListDrawable
,因此点击后它变为 active/inactive。当用户点击一个按钮,它变为活动状态时,我必须将项目数据(标题、ID)发送到后端。当用户点击非活动按钮时,我向后端发送该项目的删除请求。但问题是用户可以多次点击同一个按钮,我不想每次都发送 make 请求。例如。我可以在一秒钟内按同一个按钮 4 次,它变成 active/inactive,所以我不想在一秒钟内发出 4-5 个请求。我认为,解决方案是在该点击事件上添加延迟,例如单击后 500 毫秒或 1000 毫秒后将数据发送到后端。我尝试使用 Handler
并且确实有效。例如。当我点击第 2 个、第 4 个和第 5 个项目时,每次点击一秒钟后,我可以将数据发送到后端。但是也有一个问题。当我多次点击同一个按钮时,一秒钟后它会向后端发送多个请求。在启动处理程序之前,我尝试在每次点击时执行 removeCallbacksAndMessages()
,但还有另一个问题。例如。当我多次点击第二项然后点击第三项时,我只将第三项数据发送到后端。但我想将第二和第三项数据发送到后端。那么谁能帮我实现这个功能?
private long mLastClickTime = 0;
...
// inside onCreate or so:
findViewById(R.id.button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// mis-clicking prevention, using threshold of 1000 ms
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000){
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
// do your magic here
}
}
详情请看这里:Android Preventing Double Click On A Button