[英]OnClickListener to be executed only once
在圖像上,我想設置一個單擊偵聽器,以便在單擊后執行操作。
即使單擊一下,下面的代碼也被多次調用。
我該如何預防? (我使用過一個onTouchListener,但結果是相同的...)
Image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("DisplayImage", "on click");
DisplayOneImage doi=new DisplayOneImage(DisplayImage.this,"Filtered image 1");
doi.show();
}
});
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<!-- \/ \/ \/ \/ To be deleted Menu \/ \/ \/ \/ -->
<!--include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" /-->
<!-- /\ /\ /\ /\ To be deleted Menu /\ /\ /\ /\ -->
<LinearLayout
android:id="@+id/img_original"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Original Image:" />
<ImageView
android:id="@+id/initial_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"/>
</ImageView>
</LinearLayout>
</ScrollView>
我將onClick
方法內的OnClickListener
設置為null
,如下所示。
Image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("DisplayImage", "on click");
DisplayOneImage doi=new DisplayOneImage(DisplayImage.this,"Filtered image 1");
doi.show();
v.setOnClickListener(null);//Remove setOnClickListener
}
});
如果有人想要一個只能每秒(1000毫秒)被單擊的onClickListener
:
private boolean clicked = false;
element.setOnClickListener(v -> {
if(!clicked){
clicked = true;
doSomething(v.getSomething());
new Handler().postDelayed(() -> clicked = false, 1000);
}
});
當然,您可以將1000更改為您希望看到的任何毫秒數。
另一個更具侵入性的選擇
Image1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("DisplayImage", "on click");
DisplayOneImage doi=new DisplayOneImage(DisplayImage.this,"Filtered image 1");
doi.show();
Image1.setVisibility(View.GONE);
}
});
用這個:
Image1.setOnClickListener(new View.OnClickListener() {
boolean clicked = false;
public void onClick(View v) {
if (!clicked) {
Log.d("DisplayImage", "on click");
DisplayOneImage doi=new DisplayOneImage(DisplayImage.this,"Filtered image 1");
doi.show();
clicked = true;
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.