4

ListView Adapter's getView()函数中我有这个:

holder.comment.setText(Html.fromHtml(comment));
holder.comment.setMovementMethod(LinkMovementMethod.getInstance());

holder.comment是一个TextView

在包含此 ListView 的 Activity 中,我实现了onItemClick Listener. 在我启用之前一直有效

holder.comment.setMovementMethod(LinkMovementMethod.getInstance());

现在项目单击侦听器不起作用,好像这行代码覆盖了单击行为。单击事件仅适用于TextView (holder.comment)在浏览器中打开链接的事件。单击项目的任何其他部分ListView不起作用。

编辑:

commentsListView
    .setOnItemClickListener(new AdapterView.OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            Toast.makeText(CommentsActivity.this,"" + arg2,Toast.LENGTH_LONG).show();
        }
    });
4

2 回答 2

4

如果列表的任何行项包含FocusableClickable查看,则 OnItemClickListener 将不起作用。

行项目必须具有类似的参数

android:descendantFocusability="blocksDescendants"

您的list_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical" >

// your other TextView and Other widget here

</LinearLayout>
于 2013-11-08T06:21:42.447 回答
2

因为row xml的内容阻塞了listview的点击事件,简单的添加了descendantFocusability属性 main layout of row xml.

android:descendantFocusability="blocksDescendants"

于 2013-11-08T06:21:57.220 回答