ListViewに使用しているカスタムアダプタを使用しています。ArrayListを作成した後
WifiListAdapter<WifiListItem> adapter = new WifiListAdapter<WifiListItem>(
this, R.layout.listview_item_text, listItems);
私のアプリには次のコードがあります。
ListView listView = (ListView) findViewById(android.R.id.list);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setAdapter(adapter);
ただし、チェックボックスをクリックしようとしても何も起こりません。したがって、チェックボックスの状態を手動で切り替える必要があります。
protected void onListItemClick(ListView l, View v, int position, long id) {
CheckedTextView checkBox = (CheckedTextView) v
.findViewById(R.id.text1);
if (checkBox != null) {
checkBox.toggle();
その後、それは動作します。(その前に、setChoiceModeメソッド呼び出しを削除する必要があります)
では、何が問題になるのでしょうか。なぜ効果がないのですか?
私のR.layout.listview_item_text.xml
<TextView
android:id="@+id/topText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"
android:paddingTop="7dp"
android:textColor="?android:attr/textColorPrimary"/>
<TextView
android:id="@+id/botText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="17sp"
android:paddingTop="2dp"
android:paddingBottom="7dp"
android:textColor="?android:attr/textColorTertiary"
/>
私のアダプターでは、チェックボックスのレイアウトを次のコードで膨らませています。
convertView = mInflater.inflate(
R.layout.listview_item_checkbox, null);
CheckedTextView checkbox = ((CheckedTextView) convertView
.findViewById(R.id.text1))
listview_item_checkbox.xml
<CheckedTextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="22sp"
android:paddingTop="7dp"
android:paddingBottom="7dp"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
/>