カスタム ListView に電話連絡先を読み込んでいます。各行は、CheckedTextView と別の TextView を含むチェック可能な LinearLayout です。
リスト ビューにカスタム ArrayAdapter をフィードしています。私の問題は、getView() 内で CheckedTextViews を制御できないことです。たとえば、次のことを試すと
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if(row == null){
row = inflater.inflate(layout, parent, false);
}
CheckedTextView checkedTextView = (CheckedTextView) row.findViewById(R.id.checkedTextView);
checkedTextView.setText("A");
checkedTextView.setChecked(true);
return row;
}
リストビューをスクロールするたびにすべてのテキストビューをチェックするはずですが、そうはなっていません。誰かがそれを行う方法を教えてもらえますか?
編集: getView() 内で確認することが重要です。setListAdapter() の後ですべてを確認することはできません。
EDIT2: これは、各行のビューを示す xml ファイルです
<?xml version="1.0" encoding="utf-8"?>
<com.example.multiplecontacts.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<CheckedTextView
android:id="@+id/checkedTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:paddingBottom="0dp"
android:text="CheckedTextView"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/subTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Small Text"
android:paddingTop="0dp"
android:textAppearance="?android:attr/textAppearanceSmall" />
</com.example.multiplecontacts.CheckableLinearLayout>
CheckableLinearLayout は、LinearLayout を拡張し、前に述べたように Checkable を実装するカスタム レイアウトです。そして、私はここからそれを取りました