4

CheckedTextViews が動的に入力されるリストビューがあります。リストビューは複数選択モードに設定されています。リストビューのクリックに応答するために OnItemClickListener を使用しています。また、CheckedTextView のレイアウトを使用して XML ファイルを作成しました (実際には、標準の android.R.layout.simple_list_item_multiple_choice の単なるコピーです)。したがって、この場合はすべて正常に動作します。リストビュー内の項目をクリックすると、適切な checkedtextview がチェックされます。しかし、次のレイアウトを使用しようとすると、checkedtextview はクリックに応答せず、まだチェックされていません。

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll"
    android:layout_height="wrap_content"   
    android:layout_width="wrap_content"  
    android:orientation="vertical"  
    android:padding="5px">
    <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/text1"
        android:layout_width="fill_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:gravity="center_vertical"
        android:drawableLeft="@drawable/checkbox_selector"
        android:paddingLeft="6dip"
        android:paddingRight="6dip"
        android:background="#00ffffff"
        android:textSize="15sp"
        android:singleLine="true"/>
</LinearLayout>    

CheckedTextViews が LinearLayout に配置され、Listview のリスト項目からクリック イベントを受信しないためだと思います。

4

5 に答える 5

1

私は違うと思います。のソース コードをsimple_list_item_multiple_choice.xmlandroid:checkMark見ると、属性が に設定されていることがわかります?android:attr/listChoiceIndicatorMultiple。これは、ソース コードCheckedTextViewからわかるように、どのような状態であってもチェック ボックスを描画するために が内部的に使用するものです。

CheckedTextViewしかし、レイアウト内の の定義には、この属性がありません。CheckedTextView要素内での使用ではなく、これを非難しLinearLayoutます。

私は間違っていて、あなたは正しいと思いました。カスタムの行はListView実装する必要があるようですが、実装CheckableCheckedTextViewていLinearLayoutません。詳細については、別の StackOverflow スレッドでこの回答を参照してください。

于 2011-10-28T14:42:06.107 に答える
0

OnClickEvent を受け取らなくても、リスト項目と同じサイズのブール値 ArrayList を使用して、これらのチェックボックスの状態を維持できます。ここで、私はそのようなことを答えました。より良いアイデアが得られることを願っています。

于 2011-10-19T10:54:57.963 に答える
0

この問題は attr が原因singleLine = trueです。これを削除するか、 に置き換えると正常maxLines = 1に動作します。実際、アイテムをクリックするとステータスがチェックされます — Android のバグだと思います。

于 2017-03-31T01:15:44.537 に答える