最近工作中遇到一个给GridView响应双击事件的需求,参照在stackoverflow上查到的一些答案实现了个响应OnItemDoubleClick事件的OnItemClickListener,目前的实现方式就是定义一个实现了OnItemClickListener接口的内部类。下面是代码:
class CustomOnItemClickListener implements OnItemClickListener {
private boolean nonDoubleClick = true;
private long firstClickTime = 0L;
private final int DOUBLE_CLICK_TIMEOUT = 180;//ViewConfiguration.getDoubleTapTimeout();
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
// @TODO check and catch the double click event
synchronized(VibinOnItemClickListener.this) {
if(firstClickTime == 0) {
firstClickTime = SystemClock.elapsedRealtime();
nonDoubleClick = true;
} else {
long deltaTime = SystemClock.elapsedRealtime() - firstClickTime;
firstClickTime = 0;
if(deltaTime < DOUBLE_CLICK_TIMEOUT) {
nonDoubleClick = false;
this.onItemDoubleClick(parent, view, position, id);
return;
}
}
view.postDelayed(new Runnable() {
@Override
public void run() {
if(nonDoubleClick) {
// @TODO add your logic for single click event
firstClickTime = 0;
}
}
}, DOUBLE_CLICK_TIMEOUT);
}
}
public void onItemDoubleClick(AdapterView<?> parent, View view, int position, long id) {
// @TODO override this method with your own logic
}
}这个简单实现可以实用于大部分常用的AdapterView。记录一下,也希望能顺便帮到有需要的朋友。
该博客介绍了如何在Android应用中为GridView实现双击事件响应。作者通过创建一个实现了OnItemClickListener接口的内部类,详细说明了在GridView上实现OnItemDoubleClick的步骤和代码示例。
2730

被折叠的 条评论
为什么被折叠?



