0

私はAndroidプロジェクトに取り組んでおり、string.xmlファイルにあるstring-arrayからのアイテムを含むスピナーを持っています。

文字列.xmlには次の配列があります

<string-array name="array_loginType">
        <item>Select Login Type</item>
        <item>Website</item>
        <item>App</item>
        <item>Other</item>
</string-array>

スピナーには次のXMLが含まれています

<Spinner  android:id="@+id/add_cboLoginType"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:prompt="@string/add_select_login_type"
    android:padding="4dp" 
    android:entries="@array/array_loginType"/>

ある時点で、ユーザーはスピナーからアイテムを選択でき、送信されるとアイテムがデータベースに保存されます。次に、ユーザーが詳細を編集できるようにし、データベースから取得したアイテムに基づいて、スピナー内で選択したアイテムを設定しようとしています。つまり、データベース内に保存されたアイテムが言うWebsite場合Website、スピナー内で選択されます。

あなたが提供できるどんな助けにも感謝します。

4

2 に答える 2

0

したがって、ユーザーにタイプを選択させて、データベース内の他のデータと一緒に保存し、ユーザーがそのデータを編集しようとしたときに、画面を編集して事前に選択されたスピナーを使用するようにします。

まず、が必要ですOnItemClickListener。これにより、ユーザーが何かを選択したときに通知されます。

Spinner spin = (Spinner) findViewById(R.id.add_cboLoginType);
spin.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(final AdapterView<?> parent, final View view, 
                            final int position, final long id) {
           // update the type field on the data object you are creating or editing
           // position is the type index
           obj.setTypeIndex(position);
        }
    }
);

これが変更の表示方法です。事前選択は編集モードになっています。

//editMode boolean.. why not
if (editMode) {
     spin.setSelection(obj.getTypeIndex, true);
}
于 2012-09-19T23:40:57.180 に答える
0

配列内のどの位置が正しい選択を保持しているかがわかっている場合は、Spinner.setSelection();-methodを使用して、それを表示するようにスピナーを設定できます。

あなたの例では、Websiteは配列の位置1にあります(最初の実際のエントリは番号0です)。

したがって、コードは次のようになります。

// Declare the spinner object
Spinner mySpinner = (Spinner) findViewById(R.id.add_cboLoginType);
// Set the correct selection
mySpinner.setSelection(1, true);

2番目の引数は、スピナーに選択範囲を「アニメーション化」するように指示します。つまり、正しい選択範囲を実際に表示し、正しい値を設定するだけではありません(falseに設定されているか、まったく含まれていない場合、スピナーは変更されます(選択は意図したとおりに機能します)が、デフォルトの選択のままであるように見えます)。

于 2012-09-19T23:38:16.580 に答える