Создать Spinner программно

1

Мне нужно создать Spinner, которого нет в моем макете.

поэтому я хочу создать его. Программируем. Я пишу следующий код в классе "Моя активность"

Spinner spinner = new Spinner(this);
String option[]={"By Date","By Transaction ID","By Customer Phone"};
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,option);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item );
spinner.setAdapter(spinnerArrayAdapter);
spinner.performClick();
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parentview, View v,int position, long id)
    {
        Log.d("in select","yes");
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) 
    {
        Toast.makeText(MainMenu.this,"no",Toast.LENGTH_LONG).show();
        Log.d("In No select","No");
    }
});

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

Теги:

2 ответа

1
Лучший ответ

В onItemSelected:

@Override
public void onItemSelected(AdapterView<?> parentview, View v,int position, long id)
{
    Log.d("in select","yes");
}

position поможет вам получить выбранный элемент. Что в вашем случае должно быть:

option[position]
  • 0
    спасибо за ответ, но функция onItemSelected не вызывается, так как я получаю значение, не вызывая его, почему оно не вызывается
  • 0
    Да, просто поместите свой резервный массив в упражнение и используйте положение, чтобы выяснить, какая вещь была выбрана.
Показать ещё 1 комментарий
1

Ваш единственный способ получить доступ к нему за пределами вашего слушателя - это сделать переменную, которая будет удерживать позицию, поэтому вы будете использовать ее позже. Что-то вроде этого:

public class YourActivity extends Activity {
    private int curPos;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    Spinner spinner = new Spinner(this);
    String option[]={"By Date","By Transaction ID","By Customer Phone"};
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,option);
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item );
    spinner.setAdapter(spinnerArrayAdapter);
    spinner.performClick();
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parentview, View v,int position, long id)
        {
            curPos = position;
            Log.d("in select","yes");
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) 
        {
            Toast.makeText(MainMenu.this,"no",Toast.LENGTH_LONG).show();
            Log.d("In No select","No");
        }
    });
}
  • 0
    эй, я думаю, вы не правильно поняли, моя проблема в том, что выполнение не достигает блока onItemSelected
  • 0
    Ой, извини. Вы пытались отладить его и поставить точку останова при открытии метода "onItemSelected"?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню