заполнить spinnerB одним из двух массивов (из string.xml) из пользовательского выбора spinnerA - PullRequest
0 голосов
/ 06 марта 2012

Я работал над этим всю ночь, и я нахожусь в тумане мозга. Может ли кто-нибудь дать мне фрагмент кода, который поможет мне в данный момент заполнить SpinnerA onCreate:

ArrayAdapter<CharSequence> adapterTypeGas = ArrayAdapter.createFromResource( this, R.array.TypeGas, android.R.layout.simple_spinner_item); adapterTypeGas.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerTypeGas.setAdapter(adapterTypeGas);

R.array.TypeGas имеет два варианта «Пропан-газ» или «Природный газ». в зависимости от того, что выберет пользователь, я хочу, чтобы SpinnerB использовал либо R.array.NaturalGas, либо R.array.PropaneGas. Моя проблема в том, что спиннер заполняется при создании, как я могу изменить его, чтобы он не заполнялся до тех пор, пока SpinnerA onItemSelected? Спасибо за вашу помощь. Я довольно новичок в разработке, поэтому, если бы вы могли подробно описать свой ответ, это было бы здорово.

после реализации кода из "RastheDestoryer" я получаю ошибку в "createFromResource" ArrayAdapter для spinnerB. ошибка: метод createFromResource (Context, int, int) в типе ArrayAdapter не применим для аргументов (CSSTPipeSizingActivity.OnGasSelectedListener, int, int). В моем файле main.xml я должен указать массив для spinnerB (этот массив хранится в моем файле strings.xml). Я думаю, что это проблема, потому что в моем коде я говорю это другой массив. Есть мысли о том, как решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 06 марта 2012
        public class MainActivity extends Activity implements OnItemSelectedListener{
    Spinner chooseproject,choosetask;
    public static ArrayList<String>projectnameList,propanegasList,naturalgaslist;
     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    projectnameList=new ArrayList<String>();
    propanegasList=new ArrayList<String>();
    naturalgaslist=new ArrayList<String>();
    projectnameList.add("Propane Gas");
    projectnameList.add("Natural Gas");
propanegasList.add("p1");
propanegasList.add("p2");
propanegasList.add("p3");
propanegasList.add("p4");
propanegasList.add("p5");
naturalgaslist.add("n1");
naturalgaslist.add("n2");
naturalgaslist.add("n3");
naturalgaslist.add("n4");
naturalgaslist.add("n5");

    chooseproject=(Spinner)findViewById(R.id.chooseproject_dropdown);
            choosetask=(Spinner)findViewById(R.id.choosetask_dropdown);
     chooseproject.setOnItemSelectedListener(this);
    ArrayAdapter<String> projectName=new ArrayAdapter<String>  
                (this,R.layout.dropdow_spinner_dropdown_item,projectnameList);
                projectName.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                chooseproject.setAdapter(projectName);
     choosetask.setOnItemSelectedListener(this);

    }
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            switch(arg0.getId())
            {
            case R.id.chooseproject_dropdown:

                String ProjectName=chooseproject.getSelectedItem().toString();



                  if(ProjectName.equalsIgnoreCase("Propane Gas")
    {
     ArrayAdapter<String> projectTask=new ArrayAdapter<String>
                    (this,R.layout.dropdow_spinner_dropdown_item,propanegasList);
                    projectTask.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    choosetask.setAdapter(projectTask);
    }
    else
    {
    ArrayAdapter<String> projectTask=new ArrayAdapter<String>
                    (this,R.layout.dropdow_spinner_dropdown_item,naturalgaslist);
                    projectTask.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    choosetask.setAdapter(projectTask);
    }
    }


                break;
            case R.id.choosetask_dropdown:   

                String ProjectTaskName=choosetask.getSelectedItem().toString();

                break;
            }  


        }
    }
0 голосов
/ 09 июля 2012

Это код, который я использовал в итоге:

public void main program () {
...
ArrayAdapter<CharSequence> adapterTypeGas = ArrayAdapter.createFromResource(
            this, R.array.TypeGas, android.R.layout.simple_spinner_item);
        adapterTypeGas.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerTypeGas.setAdapter(adapterTypeGas);

    //Sets up the spinnerPipeLength spinner 
    ArrayAdapter<CharSequence> adapterPipeLength = ArrayAdapter.createFromResource(
            this, R.array.PipeLength, android.R.layout.simple_spinner_item);
        adapterPipeLength.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerPipeLength.setAdapter(adapterPipeLength);

    // Listens for changes in the selected item in each spinner 
    spinnerTypeGas.setOnItemSelectedListener(new GASOnItemSelectedListener());
    spinnerSupplyPressure.setOnItemSelectedListener(new    SupplyOnItemSelectedListener());
    spinnerPipeLength.setOnItemSelectedListener(new MyOnItemSelectedListener());
...
} // end mainprogram()

public void SpinnerNatGas() {
    ArrayAdapter<CharSequence> adapterSupplyPressure = ArrayAdapter.createFromResource(
            this, R.array.NaturalGas, android.R.layout.simple_spinner_item);
    adapterSupplyPressure.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerSupplyPressure.setAdapter(adapterSupplyPressure);
    adapterSupplyPressure.notifyDataSetChanged();
} // end SpinnerNatGAs ()

public void SpinnerProGas () {
    ArrayAdapter<CharSequence> adapterSupplyPressure = ArrayAdapter.createFromResource(
            this, R.array.PropaneGas, android.R.layout.simple_spinner_item);
    adapterSupplyPressure.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerSupplyPressure.setAdapter(adapterSupplyPressure);
    adapterSupplyPressure.notifyDataSetChanged();
} // end SpinnerProGAs ()
0 голосов
/ 06 марта 2012

Добавьте слушателя onitemSelected к общему классу

public class OnGasSelectedListener implements OnItemSelectedListener {
    public void onItemSelected(AdapterView<?> parent, View view, int pos,
     long id) {
    //set all of spinnerB adapter stuff here

    }
    public void onNothingSelected(AdapterView<?> parent) {}
}

и добавьте слушателя в spinnerTypeGas.

spinnerTypeGas.setOnItemSelectedListener(new OnGasSelectedListener());  

onitemselected будет запущено сразу после сборки счетчика и каждый раз, когда пользовательменяет выбор

...