Невозможно использовать onItemSelectListener () с Spinner с одним элементом - PullRequest
0 голосов
/ 01 октября 2011

Итак, у меня есть счетчик (spinner2 здесь), который заполняется через ArrayAdapter из таблицы SQLite. При выборе предмета я хочу его

  • удалено из БД
  • удалено из счетчика

Код ниже действительно работает. За исключением случаев, когда у прядильщика есть только один предмет. Когда это произойдет Похоже, onItemSelected вообще не вызывается.

Я получаю следующий LogCat

10-01 22:30:55.895: WARN/InputManagerService(1143): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@45a06028

Да, и когда два элемента заполняют счетчик, spinner.getcount () показывает два элемента, так что это не странный случай, когда система считает, что счетчик пуст или что-то в этом роде.

Это код:

public class SpinnerItemSelectListener implements OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            if(parent == spinner2){
                if(autoselected){
                    autoselected=false;
                }
                else{
                    //uniqvalarray is the arraymade from pulling data from SQLite and populaitng array adapter
                    Integer i = uniquevalarray.get(pos);
                    deleteRow(i);//deletes the row from the database and repopulates the above array.
                    autoselected=true;//just a boolean to stop autoslecting in onCreate()
                    //makeAlert(i);initially wanted to make alert box.
                    loadSpinner2();//reloads the spinner with new data


                }

            }



        }

        public void onNothingSelected(AdapterView parent) {
            //TODO
        }
    }

1 Ответ

0 голосов
/ 01 октября 2011

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

Решение, которое я думаю, вы должны использовать, это использовать кнопку рядом со счетчиком, чтобы бросить функции удаления..

Вы должны подумать, что Spinner не создан для использования с уникальным элементом, потому что изменения обычно происходят только при изменении выбранного элемента.тогда это может быть естественное решение.

...