0

こんにちは、スピナー (spinner1) があり、ユーザーがそこから項目を選択すると (例: 「カナダ」) スピナー 2 に「カナダ」の州を入力します。次のことを試しましたが、機能しません。やろうとしましたこれを使用して:

if (spinner1.getSelectedItem().toString().equals("Canada"))
{
    addItemsOnSpinner2();
}

public void addItemsOnSpinner2() {

  spinner2 = (Spinner) findViewById(R.id.spinner2);
    List list = new ArrayList();
    list.add("Item 1");
    list.add("Item 2");
    list.add("Item 3");
    list.add("Item 4");
    ArrayAdapter dataAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, list);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(dataAdapter);

}

何らかの理由で項目が spinner2 に追加されていません。助けてください

4

1 に答える 1

0

このコード

    if (spinner1.getSelectedItem().toString().equals("Canada"))
    {
        addItemsOnSpinner2();
    }

は にあるため、 が初めてActivity作成されたときにのみ実行されますonCreate()。このコードをonItemSelected()forに追加する必要がありますspinner1OnItemSelected listenerしたがって、最初にを実装する必要がありますspinner

spinner1.setOnItemSelected(new OnItemSelected()
{
    @Override
    public void onItemSelected(AdapterView<?> parent, View v, int position, 
                                    long id) 
    {
         TextView tv = (TextView)v;   // cast the View to a TextView
         if ("Canada".equals(tv.getText().toString())
         {
            addItemsOnSpinner2();   
         }
    }

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

    }
});

このようなものがうまくいくはずです。positionただし、テキストを取得する代わりに使用する方がおそらく安全です。

OnItemSelected ドキュメント

于 2013-10-18T22:41:27.460 に答える