Android - ListView的setOnItemClickListener事件在Fragment中不起作用

时间:2013-05-30 11:13:03

标签: android listview

早上好,

我对片段中setOnItemClickListener的{​​{1}}事件有一个问题,它永远不会被解雇。

以下是ListView中项目的代码:

listView

这是列表的xml代码(还包括带有一些侦听器的edittext):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="80dip" >

<ImageView
  android:id="@+id/url_foto"
  android:layout_width="100dip"
  android:layout_height="100dip" 
  android:src="@drawable/stub" 
  android:scaleType="centerCrop"/>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_toRightOf="@id/url_foto"
    android:orientation="vertical"
    android:paddingLeft="10sp" >

    <TextView
        android:id="@+id/nome"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textIsSelectable="true" />

    <TextView
        android:id="@+id/cognome"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textIsSelectable="true" />

最后是包含未被触发的事件的片段:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<EditText
    android:id="@+id/cerca_il_prof_edit_search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="search" />

<ListView
    android:id="@+id/cerca_il_prof_list_result"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:cacheColorHint="#00000000"
    android:drawSelectorOnTop="true"
    android:focusable="true" />

有人可以帮帮我吗?

提前致谢。

问候。

朱塞佩

5 个答案:

答案 0 :(得分:2)

要扩展@ Ashwin的答案,请注意ListView会阻止包含至少一个可调焦项的项目的点击次数 后代,但它不会使内容焦点可达调用 setItemsCanFocus(真)。一种解决方法是使用

禁用后代的可聚焦性
android:descendantFocusability="blocksDescendants"

在定义列表项的布局中,尽管您可以禁用可以像前面提到的那样关注焦点的子项。 (首先从http://cyrilmottier.com/2011/11/23/listview-tips-tricks-4-add-several-clickable-areas/了解到这一点,但其他一些SO帖子也指出了这一点。)

答案 1 :(得分:1)

onViewCreated赞,

中声明你的listview和itemclick听众
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    final ListView listViewProf=(ListView)getActivity().findViewById(R.id.cerca_il_prof_list_result);
    listViewProf.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        }
    });
}

答案 2 :(得分:1)

只需将android:focusable="false" android:clickable="false"放入布局中即可。适用于所有文本视图,按钮等。 工作得很好。

答案 3 :(得分:0)

你会试试这个会对你有所帮助 lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener(){

            @Override
            public void onItemClick(android.widget.AdapterView<?> arg0,
                    View arg1, int arg2, long arg3) {
                // TODO Auto-generated method stub


            }
        });

答案 4 :(得分:0)

我找到了解决方案。如果您将列表项的布局(您在listview适配器中设置的布局)更改为

 android:clickable="false"

 android:focusable="false"

有效。