添加按钮后,Android ListView项目无法点击

时间:2016-10-17 15:53:33

标签: android listview

下面的布局适用于ListView中的单个项目。我使用自定义游标适配器来填充。我处理onItemClick并且它有效。但是只要我在布局中添加Button,onItemClick就不再被解雇了。如何进行整行注册onItemClick并同时处理按钮onClick

我想放置按钮(下面用XML注释)但我也想处理点击列表..

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_height="fill_parent" android:layout_width="fill_parent">

    <TextView android:id="@+id/tv_ordinal" style="@style/MyTextViewLabel.Black" android:textColor="@color/blue_end"/>
    <ImageView
        tools:ignore="ContentDescription"
        android:id="@+id/iv_thumb"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:gravity="start"
        android:paddingTop="10dp"          />
    <TextView android:id="@+id/tv_fileGId" style="@style/MyTextViewLabel.Black" android:textColor="@color/blue_end"/>
    <!--<Button-->
        <!--style="@style/MyClearButton"-->
        <!--android:id="@+id/bt_delete"-->
        <!--android:text="DELETE"-->
        <!--android:layout_height="50dp"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:onClick="deleteScannedItemButtonClick"/>-->


</LinearLayout>

2 个答案:

答案 0 :(得分:0)

首先做一件事......将重点放在按钮上。 之后在你的适配器::

添加一个接口::

 public interface ClickListener{
    void onBtnClicked(int position);
    void onRowClicked(int position);
}

之后执行row&amp;的点击事件。像:::

这样的按钮
 holder.MyClearButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mListener.onBtnClicked(position);
        }
    });
    holder.convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mListener.onRowClicked(position);
        }
    });

mListener将成为ClickListener的对象,您将在初始化时在适配器的构造函数中传递..

所以,你可以在activity / fragment中为这些方法获得两个方法..借助于方法中的那个位置params ...你可以得到那个行项的值..

答案 1 :(得分:0)

请尝试将此行添加到xml文件中的按钮:

android:focusable="false"

问题是Button从它所在的视图组(项目行)中获取焦点。这意味着当您单击每一行时,它始终是捕获事件的Button,但它位于屏幕区域之外,事件被丢弃。因此,您需要阻止Button捕获焦点。