自定义listitem单击不会触发listview.onclicklistener

时间:2013-11-06 17:24:17

标签: android listview onclicklistener listitem

我的第一个问题。请放轻松我。

我有一个ListView已实施onItemClickListener

我还有一个android自定义listItem,其中包含RelativeLayout个2个重叠子项(LinearLayout)。

当我点击ListItem时,它不会触发ListView.onClickListrener代码。 仅当自定义listItem具有2个重叠子项时才会发生这种情况。如果它只有一个,一切顺利。

为什么会这样?非常感谢,这让我发疯。

custom_list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
>

<LinearLayout
    android:id="@+id/layout_one"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

...

</LinearLayout>

<LinearLayout
    android:id="@+id/layout_two"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

 <Button ...>

</LinearLayout>

</RelativeLayout>

在MainActivity.java中:

mMainListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{   

...//code reachable only when customListItem has only one child

});

我发现了我的问题

问题是在自定义listItem视图中我添加了一个Button - 它从listItem获取焦点。

抱歉这个含糊不清的问题。

1 个答案:

答案 0 :(得分:1)

即使您的自定义列表项中包含交互式小部件,您仍然可以通过设置

来正确触发onItemClick侦听器
android:focusable="false"
android:focusableInTouchMode="false"

在所有交互式小部件上(例如按钮,复选框)。出于某种原因,这似乎不适用于ImageButton

如果仍然无效,请考虑在适配器中创建列表元素时向一个/两个LinearLayouts添加一个侦听器。