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

リストのいずれかの行項目が含まれているFocusableか、Clickable表示されている場合、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

行xmlのコンテンツがリストビューのクリックイベントをブロックするため、単純にdescendantFocusabilityプロパティを 追加しますmain layout of row xml.

android:descendantFocusability="blocksDescendants"

于 2013-11-08T06:21:57.220 に答える