在快速点击 gridview 的项目时,同样的方法被调用了两次
While speedily clicking on item of gridview, same method has been called twice a time
我在我的项目中使用了网格视图。当我快速单击网格视图项目时,它会两次调用相同的方法。但我慢慢点击然后它完美地工作。请帮助我out.in 这个方法我调用对话框当我点击它打开对话框的项目但是当我快速点击该项目然后对话框打开两次。我应该怎么做才能解决这个问题
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, final int position, long id) {
showDialog(position);
}
});
您可以使用此不允许多次快速点击的代码代替您的 onclicklistener。
public abstract class SingleClickListener implements View.OnClickListener {
private static final long THRESHOLD_MILLIS = 500L;
private long lastClickMillis;
@Override
public void onClick(View v) {
long now = SystemClock.elapsedRealtime();
if (now - lastClickMillis > THRESHOLD_MILLIS) {
onClicked(v);
lastClickMillis = 0;
} else {
lastClickMillis = now;
}
}
public abstract void onClicked(View v);
}
而不是普通的 onclicklistener 使用这个
stage1_nxt.setOnClickListener(new SingleClickListener() {
i have solution for opening twice time method.i can define the below condition throgh sloved it
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
private long mLastClickTime = 0;
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000)
{
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
grideProductAdd(position);
}
});
我在我的项目中使用了网格视图。当我快速单击网格视图项目时,它会两次调用相同的方法。但我慢慢点击然后它完美地工作。请帮助我out.in 这个方法我调用对话框当我点击它打开对话框的项目但是当我快速点击该项目然后对话框打开两次。我应该怎么做才能解决这个问题
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, final int position, long id) {
showDialog(position);
}
});
您可以使用此不允许多次快速点击的代码代替您的 onclicklistener。
public abstract class SingleClickListener implements View.OnClickListener {
private static final long THRESHOLD_MILLIS = 500L;
private long lastClickMillis;
@Override
public void onClick(View v) {
long now = SystemClock.elapsedRealtime();
if (now - lastClickMillis > THRESHOLD_MILLIS) {
onClicked(v);
lastClickMillis = 0;
} else {
lastClickMillis = now;
}
}
public abstract void onClicked(View v);
}
而不是普通的 onclicklistener 使用这个
stage1_nxt.setOnClickListener(new SingleClickListener() {
i have solution for opening twice time method.i can define the below condition throgh sloved it
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
private long mLastClickTime = 0;
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
if (SystemClock.elapsedRealtime() - mLastClickTime < 1000)
{
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
grideProductAdd(position);
}
});