7
votes

Spinner Supprimer les articles

J'ai développé une application dans laquelle j'ai une valeur de texte d'édition du texte d'édition est entrée dans le bouton Spinner sur le bouton cliqué sur l'élément que j'ai sélectionné pour supprimer est supprimé mais que le problème est que lorsque je supprime le dernier élément de Spinner Whole Spinner liste des flushes. Je veux supprimer uniquement l'élément sélectionné (seulement le dernier élément)

Mon code est comme suit: P>

@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");
}


1 commentaires

@Shruthi Si u cliquez sur Supprimer le bouton La valeur sélectionnée doit être supprimée mais maintenant toutes les valeurs sont supprimées correctement?


4 Réponses :


11
votes

Pour supprimer tous les éléments Utilisez:

mySpinner.setAdapter(m_adapterForSpinner);


2 commentaires

Dans mon cas, myspinner.setadapter (NULL); Jette une exception!


Réglage @Chenosic L'adaptateur sur NULL retirera la connexion entre la spinner et l'adaptateur, nous essayons en fait de supprimer uniquement les éléments de l'adaptateur.



-1
votes

J'ai eu le même problème. Faire cela a résolu le problème en vidant la fileuse: xxx


0 commentaires

0
votes

N'oubliez pas que les méthodes "Supprimer" et "Effacer" ne fonctionnent pas avec ArrayAdapter pour Android 2.3.3 et plus bas. Vous recevrez un message d'erreur "Opération non prise en charge .... bla bla bla". Peut-être qu'ils travaillent avec Android 4.0 et plus, je ne sais pas. Voici ma solution qui fonctionne même avec MinsDkversion = "5".

  1. Créez Spinner et remplissez-la avec des données de test Ce code est sous un formulaire d'activité. Utilisez ArrayList comme source de données pour arrayadapter au lieu d'une matrice. C'est important car vous utiliserez sa méthode "Supprimer" plus tard P>

    List<String> reportFiles = new ArrayList<String>();        
    //fill some test data     
    reportFiles.add("aaaaaaaaaaaaa");
    reportFiles.add("bbbbbbbbbbbbb");
    reportFiles.add("ccccccccccccc");
    
    //create spinner from corresponding layout xml file
    Spinner spnReport  = (Spinner) findViewById(R.id.spinner_report);
    
    //create ArrayAdapter
    ArrayAdapter reportAdapter =  new ArrayAdapter(this, 
            android.R.layout.simple_spinner_dropdown_item,  reportFiles);
    
    //set adapter to spinner
    spnReport.setAdapter(reportAdapter);
    
    //select first item in adapter - is not obligatory
    spnReport.setSelection(0);
    
  2. Supprimer l'élément sélectionné de Spinner P>

    reporterfiles.remove ((string) sphreport.getselectedem ()); code> p>

    // créer un nouveau arrayadapter avec une arrayliste modifiée ReportAdapter = nouveau arrayadapter (ceci, android.r.layout.simple_spinner_dropdown_item, reports de compte); code> p>

    // Définissez un nouvel adaptateur de tableau sur Spinner SPNREPORT.SetAdapter (ReportAdapter); Code> P>

    // sélectionne premier élément SPNREPORT.SETSELLECTION (0); CODE> P> LI> ol> p>


0 commentaires

0
votes

Pour moi, la réponse acceptée a lancé une exception alors ce que j'ai fait était ceci. XXX


0 commentaires