0

以下のレイアウト、つまり 1 つのスピナーと、いくつかの編集ボックスとスピナーを含む線形レイアウトがあります。このレイアウトは、オブジェクトにマップ/表現されます (X と呼びましょう)。メインのスピナーには n 個のエントリがあり、各エントリはレイアウト オブジェクト (X) にマップされます。つまり、全部で n 個のレイアウトが必要です。ユーザーが一度に 1 つのオブジェクトだけを埋められるようにしたいので、 、私は1つのレイアウトのみを表示したままにします。これを解決するために、1つの方法は、.xmlにn個のレイアウトを持ち、リスナーのonitemselectedで可視性を操作することです.これを解決するための他のより良い/最適化された方法はありますか. 最初に n の値がわからない場合、これを動的にするにはどうすればよいですか?

`<Spinner
    android:id="@+id/linesspinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />


<LinearLayout
    android:id="@+id/linView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/linename1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/linecffiltext" />

    <Spinner
        android:id="@+id/trospinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/Tro_arrays"
        android:prompt="@string/linetrotext" />

    <EditText
        android:id="@+id/line1troval"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10" >
    </EditText>

    <Spinner
        android:id="@+id/cfspinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/cf_arrays"
        android:prompt="@string/linecffiltext" />

    <EditText
        android:id="@+id/line1cfval"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10" >
    </EditText>
</LinearLayout>
4

1 に答える 1

0

これを試して、その LinearLayout を別の xml に入れて、ループ内で何度でもその xml を呼び出します。サンプル xml、名前 attrib_row.xml

<?xml version="1.0" encoding="utf-8"?>
<Linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<TextView
    android:id="@+id/lable"
    android:layout_width="150dip"
    android:layout_column="0"
    android:padding="3dip"
    android:textColor="#000033" />
</Linearlayout>

ループでそれを呼び出すコード

 Linearlayout row11 = (Linearlayout) LayoutInflater.from(this).inflate(
                R.layout.attrib_row, null);
        ((TextView) row11.findViewById(R.id.lable)).setText("example");
于 2013-03-04T10:47:38.417 に答える