При удалении последнего элемента из счетчика удаляется весь список

Я пытаюсь использовать элемент управления счетчиком, который позволит пользователю удалить любой элемент списка. У меня есть кнопка «добавить» для добавления элементов в список и кнопка «удалить», которая удаляет отображаемый в данный момент элемент из списка.

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

Мой код выглядит следующим образом:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    // grab our UI elements so we can manipulate them (for the Spinner)
    // or add listeners to them (in the case of the buttons)
    m_myDynamicSpinner = (Spinner)findViewById(R.id.dynamicSpinner);
    m_addItemText = (EditText)findViewById(R.id.newSpinnerItemText);
    Button addButton = (Button)findViewById(R.id.AddBtn);
    Button clearButton = (Button)findViewById(R.id.ClearBtn);

    // create an arrayAdapter an assign it to the spinner
    m_adapterForSpinner = new ArrayAdapter(this, android.R.layout.simple_spinner_item);
        ((ArrayAdapter)m_adapterForSpinner).setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    m_myDynamicSpinner.setAdapter(m_adapterForSpinner);

    // add listener for addButton
    addButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            addNewSpinnerItem();
        }
    });

    clearButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            clearSpinnerItems();
        }
    });
}

// add listener for addButton
private void addNewSpinnerItem() {
    if (m_addItemText.getText().length() == 0) {
        Toast.makeText(getApplicationContext(), "The textView is empty", Toast.LENGTH_LONG).show();
    } else {
        CharSequence textHolder = "" + m_addItemText.getText();
        ((ArrayAdapter) m_adapterForSpinner).add(textHolder);
    }
    m_addItemText.setText("");
}

private void clearSpinnerItems() {
    m_myDynamicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            Object t = m_adapterForSpinner.getItem(pos);
            ((ArrayAdapter) m_adapterForSpinner).remove((CharSequence) t);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO
        }
    });
}

Есть ли у кого-нибудь идеи или предложения о том, как заставить эту работу работать?

5
задан BryanH 23 May 2011 в 20:33
поделиться