Spinner supprimer des éléments
J'ai développé une application dans laquelle j'ai une valeur de modification de texte de l'édition de texte est entré en cône sur le bouton cliqué sur l'article que j'sélectionnez supprimer est supprimé mais le problème est que lorsque je supprime le dernier élément de spinner ensemble spinner liste des bouffées de chaleur . je veux supprimer uniquement l'élément sélectionné(seul le dernier élément)
Mon code est comme suit :
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
///////////////////////////////////////////////////////////////
//grab our UI elements so we can manipulate them (in the case of 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);
//m_adapterForSpinner.add("dummy item");
////////////////////////////////////////////////////////////////
//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() {
Log.v("TAG", "addNewSpinnerItems called");
if (m_addItemText.getText().length() == 0) {//||(m_addItemText.getText().toString()==
//" ")){
Log.v("In if cndtn", "textHolder is of length 0");
Toast.makeText(getApplicationContext(), "The textView is empty",
Toast.LENGTH_LONG).show();
//m_myDynamicSpinner.clearFocus();
//m_myDynamicSpinner.setFocusable(false);
//m_addItemText.setFocusable(true);
} else {
CharSequence textHolder = "" + m_addItemText.getText();
//else{
Log.v("else", textHolder + "");
//m_adapterForSpinner.add(textHolder);
//}
((ArrayAdapter) m_adapterForSpinner).add(textHolder);
}
m_addItemText.setText("");
}
private void clearSpinnerItems() {
//m_adapterForSpinner.clear();
Log.v("TAG", "clearSpinnerItems called");
m_myDynamicSpinner
.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
//TODO Auto-generated method stub
Log.v("TAG", "Itemseleted to be removed is "
+ m_adapterForSpinner.getItem(pos).toString());
Log.v("Position of item", pos + "");
Object t = m_adapterForSpinner.getItem(pos);
Log.v("Object t ", (String) t);
((ArrayAdapter) m_adapterForSpinner).remove((CharSequence) t);
Log.v("Item removed", t + "");
//m_myDynamicSpinner.setSelected(false);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
//TODO Auto-generated method stub
}
});
//m_adapterForSpinner.add("dummy item");
}
Si u cliquez sur le bouton effacer la Valeur Sélectionnée devrait être supprimé, mais maintenant toutes les valeurs se faire supprimé le Droit?
OriginalL'auteur Shruti | 2011-05-13
Vous devez vous connecter pour publier un commentaire.
pour supprimer tous les éléments d'utilisation:
si vous souhaitez supprimer un élément en particulier, enlever cela de m_adapterForSpinner et puis:
réglage de l'adaptateur null, supprimer la connexion entre le cône et la carte, en fait, nous essayons de ne retirer l'adaptateur éléments
OriginalL'auteur thenosic
Rappelez-vous: les méthodes de "supprimer" et "clair" ne fonctionnent pas avec ArrayAdapter pour Android 2.3.3 et plus bas. Vous recevrez message d'erreur "non prise en charge de l'opération.... bla bla bla". Peut-être qu'ils fonctionnent avec Android 4.0 et plus, je ne sais pas.
Voici ma solution qui fonctionne même avec minSdkVersion="5".
Créer Spinner et le remplir avec des données de test
Ce code est dans un formulaire d'activité. Utiliser ArrayList comme source de données pour ArrayAdapter au lieu de tableau. C'est important parce que vous allez utiliser son "supprimer" méthode tard
Supprimer l'élément sélectionné de Spinner
reportFiles.remove((String)spnReport.getSelectedItem());
//create new ArrayAdapter with modified ArrayList
reportAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,reportFiles);
//set new array adapter to spinner
spnReport.setAdapter(reportAdapter);
//select first item
spnReport.setSelection(0);
OriginalL'auteur AlexPap
Pour moi la accepté de répondre avaient envoyé une exception donc ce que j'ai fait a été de ce.
OriginalL'auteur Dantalian
J'ai eu le même problème. Faire cela ne résoudra pas le problème, en vidant le spinner:
OriginalL'auteur AlexMok