gpt4 book ai didi

java - 延迟回收器查看每个项目的点击功能

转载 作者:行者123 更新时间:2023-12-02 08:40:56 24 4
gpt4 key购买 nike

我有一个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,因此它在单击时变为 Activity/非 Activity 状态。当用户单击按钮并激活按钮时,我必须将项目数据(标题、id)发送到后端。当用户单击非 Activity 按钮时,我向后端发送该项目的删除请求。但问题是用户可以多次单击同一个按钮,我不想每次都发送请求。例如。我可以在一秒钟内按同一个按钮 4 次,它就会变为 Activity/非 Activity 状态,所以我不想在一秒钟内发出 4-5 个请求。我认为,解决方案是在点击事件上添加延迟,例如单击发送数据到后端后 500 毫秒或 1000 毫秒后。我尝试使用 Handler 并且实际上它有效。例如。当我点击第二项、第四项和第五项时,每次点击一秒钟后,我就可以将数据发送到后端。但也有一个问题。当我多次单击同一按钮时,一秒钟后它会向后端发送多个请求。我尝试在启动处理程序之前对每次点击执行 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

关于java - 延迟回收器查看每个项目的点击功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61393826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com