4

我在这里的第一个问题。请对我放轻松。

我有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 获得焦点。

抱歉这个模棱两可的问题。

4

1 回答 1

1

即使在您的自定义列表项中使用交互式小部件,您仍然应该能够onItemClick通过设置正确触发您的侦听器

android:focusable="false"
android:focusableInTouchMode="false"

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

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

于 2013-11-07T09:31:08.003 回答