全て、
クイズの質問/回答をListViewに拡張するために使用されるカスタムアダプタがあります。各質問(ListViewの単一の項目)には可変数の回答があります(ただし、回答の最大数(5)は静的です)。
各RadioButtonのテキストに(setTextを使用して)回答文字列を入力することに加えて、カスタムアダプターを使用して、RadioGroup内のすべてのRadioButtonに回答が関連付けられているかどうかを評価し、それに応じて膨らませます(または膨らませません)。理想的には、カスタムアダプターで回答の妥当性を評価できるため、プログラムでRadioButtonまたは同等の効果を「アンインフレート」したいと思います。
私は試しましたが、運がありませんでしたradioButton.setHeight(0)
。radioButton.setMaxHeight(0)
answerStringsをプルするxmlリソースファイルは次のように定義されています。
answer xmlリソースファイルは、インデックス作成の目的で、質問ごとに5つの回答を想定して、すべての回答文字列を単一の文字列配列に格納します。有効な回答は、string-arrayの空でない項目で表されます。空のアイテムスタブで表される有効な回答はありません。
<string-array
name="answer_array">
<!-- question 1 answers -->
<item>question 1 answer A</item>
<item>question 1 answer B</item>
<item>question 1 answer C</item>
<item>question 1 answer D</item>
<item>question 1 answer E</item>
<!-- question 2 answers -->
<item>question 2 answer A</item>
<item>question 2 answer B</item>
<item></item>
<item></item>
<item></item>
<!-- question 3 answers -->
<item>question 3 answer A</item>
<item>question 3 answer B</item>
<item>question 3 answer C</item>
<item></item>
<item></item>
</string-array>
私のクイズのレイアウトファイルは次のとおりです。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:padding="4dip"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical" >
<!-- quiz question -->
<TextView
android:id="@+id/question"
android:layout_gravity="left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"/>
<!-- answers for each question -->
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="5dip"
android:id="@+id/radiogroup">
<RadioButton
android:id="@+id/A_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doNothing"/>
<RadioButton
android:id="@+id/B_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doNothing"/>
<RadioButton
android:id="@+id/C_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doNothing"/>
<RadioButton
android:id="@+id/D_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doNothing"/>
<RadioButton
android:id="@+id/E_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doNothing"/>
</RadioGroup>
</LinearLayout>
</LinearLayout>
カスタムアダプタ内で、次のことを実行しようとしています。
private ViewHolder initRadioButtonText(ViewHolder holder, Custom quiz_row_data) {
/* check if valid answer */
int length = (quiz_row_data.getA_AnswerString()).length();
if(length == 0) {
holder.A_button.setHeight(0);
//holder.A_button.setMaxHeight(0);
}
else
holder.A_button.setText(quiz_row_data.getA_AnswerString());
/* ..... etc etc for the other answer buttons ..... */
return holder;
}