Onclick被多次调用

时间:2016-06-21 04:13:28

标签: android android-layout onclick

我有一个列表视图,其中包含一个复选框,可点击textviews定义如下:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:focusableInTouchMode="false"
        android:focusable="false">
        <CheckBox
            android:id="@+id/favouritebutton"
            android:layout_width="60dp"
            android:layout_height="40dp"
            android:layout_centerHorizontal="true"
            android:text="Like"
            android:focusable="false"
            android:clickable="true"
            android:layout_centerVertical="true"
            android:gravity="center_vertical"
            android:textSize="12sp">
        </CheckBox>
        <TextView
            android:id="@+id/behindPlanItemLabel"
            android:layout_width="60dp"
            android:layout_height="40dp"
            android:drawablePadding="-5dp"
            android:focusable="false"
            android:clickable="true"
            android:gravity="center_vertical"
            android:text="Plan"
            android:textColor="#000000"
            style="@style/behindPlanItemLabel"
            android:textSize="12sp" />
        <TextView
            android:id="@+id/behindTimeItemLabel"
            android:layout_width="60dp"
            android:layout_height="40dp"
            android:drawablePadding="-5dp"
            android:gravity="center_vertical"
            android:text="Timer"
            android:focusable="false"
            android:clickable="true"
            android:textColor="#000000"
            style="@style/behindTimerItemLabel"
            android:textSize="12sp" />
    </LinearLayout>

我定义了一个扩展CustomerAdapter并实现CursorAdapter的{​​{1}}。 在newView方法中,我在每个按钮和文本视图中添加了侦听器

onClickListener

我已经覆盖了Onclick视图以捕获点击 当我点击布局中第3个项目的计时器时,
onclick被调用一次但是当我点击布局中的第二个项目'plan'时,
onCLick被调用两次,当我点击'like'时,布局onclick中的第一项称为3次。
对于任何点击,我只需要获得一次单击回调 我在这里做错了什么建议?

以下是完整的onCLick代码

        viewHolder.timerView.setOnClickListener(this);
        viewHolder.likeBox.setOnClickListener(this);
        viewHolder.planView.setOnClickListener(this);

2 个答案:

答案 0 :(得分:2)

感谢您的投入。现在通过在每个switch case语句中添加return来解决我的问题。

           switch (view.getId()) {
                case R.id.favouritebutton:
                    Log.d(LOG_TAG, "favourite button");
                    actionType = Constants.CLICKED_FAV;
                    // Do something
                 return;
                case R.id.behindPlanItemLabel:
                    Log.d(LOG_TAG, "plan button");
                    actionType = Constants.CLICKED_PLAN;
                    // Do something
                   return;
                case R.id.behindTimeItemLabel:
                    Log.d(LOG_TAG, "timer button");
                    actionType = Constants.CLICKED_TIMER;
                    // Do something
                    return;
            }

答案 1 :(得分:0)

如果转到其他活动,

在适配器内的onclick监听器中使用它。 intentName.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);