Spinner не работает в Android - PullRequest
       2

Spinner не работает в Android

3 голосов
/ 02 августа 2011

Spinner не работает. Вот мой код:

public class second extends Activity{   
    Spinner spin;
    String[] str;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);        
        spin = (Spinner) findViewById(R.id.spin);
        str = new String[] {"bike","car"};      
        spin.setAdapter(new ArrayAdapter<CharSequence>(this, android.R.layout.simple_dropdown_item_1line, str));    

        spin.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> adapter, View view, int pos,
                long id) {
            // TODO Auto-generated method stub

            String data= spin.getItemAtPosition(pos).toString();
            Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
               }    
        });
    }
}

Ответы [ 4 ]

5 голосов
/ 02 августа 2011

Единственная ошибка, которую вы сделали, это то, что вы установили другой слушатель событий ..

Слушатель OnItemClickListener предназначен для ListView ..

Для Spinner вы должны установить OnItemSelectedListener ..

Попробуйте заменить OnItemClickListener на OnItemSelectedListener, например:

spin.OnItemSelectedListener (new OnItemSelectedListener() {

    public void onItemClick(AdapterView<?> adapter, View view, int pos,
            long id) {
        // TODO Auto-generated method stub

        String data= spin.getItemAtPosition(pos).toString();
        Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
    }

});
5 голосов
/ 02 августа 2011

Вот проблема в вашем методе oncreate ():

spin = (Spinner) findViewById(R.id.spin);

Вы присваиваете результат счетчику, который здесь является локальной переменной / ссылкой. Поле класса main.spinner по-прежнему равно нулю. Вот почему у вас есть NullPointerException в методе Calculate ().

Заменить строку выше на:

this.spin = (Spinner) findViewById(R.id.spin);

ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item,androidBooks);
spin.setAdapter(adapter);
5 голосов
/ 02 августа 2011

Проблема здесь,

 spin.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> adapter, View view, int pos,
            long id) {
        // TODO Auto-generated method stub

        String data= spin.getItemAtPosition(pos).toString();
        Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
    }

});

Попробуйте заменить его следующим образом,

 spin.OnItemSelectedListener (new OnItemSelectListener() {

    public void onItemSelect(AdapterView<?> adapter, View view, int pos,
            long id) {
        // TODO Auto-generated method stub

        String data= spin.getItemAtPosition(pos).toString();
        Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
    }

});
0 голосов
/ 08 февраля 2018

Попробуйте это

 spinner = (Spinner) findViewById(R.id.spinner);
 List<String> categories = new ArrayList<String>();
    categories.add("--Qualification--");
    categories.add("High School");
    categories.add("Higher Secondary/PUC");
    categories.add("Diploma");
    categories.add("Degree");
    categories.add("Master Degree");


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    R.layout.spinnertext, categories);
    adapter.setDropDownViewResource(android.R.layout.select_dialog_item);
    spinner.setAdapter(adapter);

Проверьте по этой ссылке

...