0

全て、

クイズの質問/回答を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;
}
4

2 に答える 2

1

A_button表示したくないボタンの場合は、

holder.A_button.setVisibility(RadioButton.GONE);

layoutこれにより、電話をかけるまで完全に削除されます

holder.A_button.setVisibility(RadioButton.VISIBLE);

View他の人のために場所を空けるためにそれを取り除くことを心配していない場合は、

holder.A_button.setVisibility(RadioButton.INVISIBLE);
于 2013-03-26T17:41:45.477 に答える
0

ボタンの高さを本当にゼロに変更したい場合、正しい方法は次を使用することLayoutParamsです。

holder.A_button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, 0));

それ以外の場合、2番目の解決策は、codeMagicが示したようにVisibilityを切り替えることです。

于 2013-03-26T17:57:01.493 に答える