Я пытаюсь использовать элемент управления прядильщика, который позволит пользователю удалить любой элемент списка. У меня есть кнопка «добавить», чтобы добавить элементы в список, и кнопку «удалить», которая удаляет отображаемый в данный момент элемент из списка.Удаление последнего элемента из spinner удаляет весь список
Работает как ожидается кроме, когда пользователь удаляет последний элемент в списке. В этот момент все элементы списка удаляются.
Мой код выглядит следующим образом:
@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
}
});
}
Кто-нибудь есть какие-либо идеи или предложения о том, как сделать эту работу?
У вас есть setSingleChoiceItems или setMultiChoiceItems в блесны, и вы можете плз предоставить некоторый код, чтобы мы могли помочь вам в лучшую сторону –
, что ответ? вы попадаете в Log.v («Item removed», t + «»); ? –
с использованием Log.v («Элемент удален», t + ""); Я получаю выбранный элемент, но я не могу удалить выбранный элемент. – Hisenberg