我的第一个问题。请放轻松我。
我有一个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获取焦点。
抱歉这个含糊不清的问题。
答案 0 :(得分:1)
即使您的自定义列表项中包含交互式小部件,您仍然可以通过设置
来正确触发onItemClick
侦听器
android:focusable="false"
android:focusableInTouchMode="false"
在所有交互式小部件上(例如按钮,复选框)。出于某种原因,这似乎不适用于ImageButton
。
如果仍然无效,请考虑在适配器中创建列表元素时向一个/两个LinearLayouts添加一个侦听器。