今天浪费了不少时间去解决listview中item点击不响应的问题,我在item的点击事件onitemclick()方法中想实现的是将点击的item的textview的内容传到edittext文本框中来显示。先在这里上一下代码吧:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //parent就是ListView,view表示Item视图,position表示数据索引 //获得选中项的HashMap对象 HashMap<String,String> map=(HashMap<String,String>)search_list.getItemAtPosition(position); String content=map.get("address"); ToastUtil.show(this,content); search_edittext.setText(content); }但是运行之后,无论如何点击item后,edittext都没有传到数据,之后我又将context替换成了固定string,仍然不行,可见,不是我map传入数据的问题,应该是listview本身或者其item的问题,于是我上网查了一下,发现基本上都是将item没有响应的问题归咎到item中的按钮控件上去了,但是我item布局里根本没有该控件呀,只有两个textview。后来,我打开了item的布局文件看了一下,才发现问题,真是被自己蠢哭了。
问题所在:
item布局中的父容器被我设置了焦点= =,之前手误拷贝过来忘记删了。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:focusable="true" android:focusableInTouchMode="true" android:padding="12dp" > <TextView android:id="@+id/search_item_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#002311" android:text="标题" android:textSize="18sp"/> <TextView android:id="@+id/search_item_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="内容" android:textColor="#FF4A4A4A"/> </LinearLayout>去掉这两句,就可以点击响应了。
补充:如果日后你的listview的item中用到了EditText控件,而又不想让其获取焦点,建议小心使用,不然可能会导致你的item无法响应点击操作。