0

嗨,我有一个微调器(微调器 1),当用户从中选择一个项目时(例如:“加拿大”,我希望微调器 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 spinner1. 所以你首先需要实现一个OnItemSelected listenerto that 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 回答