1

スピナーに問題があります。ボタンが押されたときの編集テキストから、スピナーに項目を動的に追加します。スピナーを押すとアイテムは正しく表示されますが、選択はできず、スピナーには表示されません。

コードは次のとおりです。

    final ArrayList<String> players = new ArrayList<String>();
    ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_dropdown_item, players); 
    final Spinner spinnerplayers = (Spinner)findViewById(R.id.spinnerplayers);

    final ImageButton addbutton = (ImageButton)findViewById(R.id.addbutton);
    final EditText editname = (EditText)findViewById(R.id.editname);
    final EditText editnum = (EditText)findViewById(R.id.editnum);
    addbutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            players.add(editname.getText().toString()+ " " + editnum.getText().toString());
            editname.setText("");
            editnum.setText("");
        }
    });

    spinnerplayers.setAdapter(adapter);

    final ImageButton removebutton = (ImageButton)findViewById(R.id.removebutton);
    removebutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            //players.remove(spinnerplayers.getSelectedItem().toString());
        }
    });

必要な場合、スピナー xml は次のとおりです。

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

どこに問題があるかについて何か考えはありますか?

前もって感謝します。

4

3 に答える 3

0

指定しようとしましたか:

adapter.setNotifyOnChange(true);

各追加/削除を示すアダプターを更新するには?

于 2013-03-28T13:14:34.680 に答える
0

ボタンのクリックリスナーが機能しない場合は、カスタムアダプターを作成する必要があります。アダプターの getView メソッドでリスナーを適用します。

OnItemSelectedListener を追加する必要があります。

 YOUR_SPINNER.setOnItemSelectedListener(new OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int position, long arg3) {
                            }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {

                }

            });

位置はあなたのアイテムを与えます。

于 2013-03-28T12:58:03.723 に答える
0

その理由は、android.R.layout.simple_spinner_item で設定するためです。

独自の Adapter クラスを作成できます。

Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
spinner.setAdapter(new MyCustomAdapter(CLASS.this, R.layout.spinner_layout, players));

次に、それは spinner_layout で設計した方法のようになります

于 2013-03-28T13:24:19.760 に答える