我有一个列表视图,其中包含一个复选框,可点击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);
答案 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);