Android Как получить значение динамически добавленного Spinner - PullRequest
3 голосов
/ 14 ноября 2011

Я динамически добавляю Spinner в свое приложение, анализируя XML-файл.

Я сделал, используя следующий код

List<Spinner> allspin = new ArrayList<Spinner>();
Spinner spin = new Spinner(getParent());
allspin.add(spin);
spin.setLayoutParams(new LayoutParams(
     LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getParent(),
        android.R.layout.simple_spinner_item, selectval);
                    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapter);

Spinners отображаются правильно, но я не знаюКак получить значение выбранного счетчика.Если есть один спиннер, который я могу получить, но есть несколько, как мне поступить?

Ответы [ 3 ]

3 голосов
/ 14 ноября 2011

Вы можете установить id счетчика динамически.

Для этого вы можете использовать

spin.setId(i); //if you use i of for loop for creating multipal spin at a tym or you can use a global variable i,incremented by one each time you create a spinner

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

Пример:

for(int i=1;i<4;i++)
{
    Spinner spin=new Spinner(getApplicationCotext());
    spin.setId(i);
    ...
    //other code
    ...
    mLayout.add(spin);//add this spinner to your layout(mLayout is object of your layout in xml)
}

Теперь

for(int i=1;i<4;i++)
{
    Spinner sp=(Spinner)findViewById(i);
    sp.setOnItemSelectedListener(new OnItemSelectedListener() {

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

            System.out.println(sp.getText().toString());//prints values of a pinner when it is changed/selected 
        }

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

        }
    });
}
3 голосов
/ 14 ноября 2011

Вы можете получить ссылку на счетчик у вашего архива, как это:

Spinner spn = allspin.get(index);

После этого вы можете получить выбранный элемент, просто позвонив:

spn.getSelectedItemPosition();
1 голос
/ 14 ноября 2011

Если вам нужно несколько блесен (я не уверен, что понимаю ваш вариант использования), тогда, когда вы создаете каждый из них, вам также необходимо создать соответствующих слушателей.Вам не нужно самостоятельно извлекать значения счетчиков;обработка этих событий выбора должна быть сделана в ваших слушателях.Возможно, если бы вы объяснили, что вы пытаетесь сделать немного лучше, вам было бы легче помочь ...

...