1

私は持っていExpandableListViewます。子行の xml は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_item_child"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/number_input_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:gravity="right"
            android:inputType="numberDecimal" >

            <requestFocus />
        </EditText>

        <Spinner
            android:id="@+id/spinner_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/temp_txt" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/number_input_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:gravity="right"
            android:inputType="numberDecimal" />

        <Spinner
            android:id="@+id/spinner_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>
</LinearLayout>

基本的に、私のgetChildView見た目は次のようになります。

public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {

    if (view == null) {
        view = inflater.inflate(R.layout.list_item_child, viewGroup, false);
    }      
    Spinner spinner = (Spinner) view.findViewById(R.id.spinner_1);
    spinner.setAdapter(mUnitsCA);
    spinner.setSelection(14);  // 14 is a test
    spinner.setOnItemSelectedListener(mSpinnerListener);

    return view;
}

これにより、spinner_1 の項目番号 14 が毎回選択されるようになります。これが機能する場合もありますが、多くの場合、代わりにスピナーの最初のアイテムが選択されます。これがどこで起こっているのかわかりません。何か案は?

4

1 に答える 1

0

setSelection()私が見つけた1つの推奨事項は、次のように変更することでした。

spinner.setSelection(14, true);

編集:( 将来の探求者のための私の答えに基づいて)

ドキュメントはこれについて非常に曖昧なようで、単に次のように述べています。

setSelection(int position, boolean animate);
//Jump directly to a specific item in the adapter data.

私の研究では、多くの人が同じ問題を抱えているようであり、私が言えることから、アニメーションを宣言するbooleanことは、それが正しいか間違っているかにかかわらず、より頻繁に必要であるように思われます。たぶん、カスタムアニメーションまたは宣言されたアニメーションのみがアニメーション化するためにのboolean値を必要としますがtrue、アニメーションがない場合は、trueまたはfalse...のいずれかを受け入れます。

于 2012-09-25T20:47:01.960 に答える