2013-08-26 29 views
6

Vorrei eliminare un elemento cliccato in ListView.Rimuovi elemento in ArrayAdapter <String> in ListView

The solution is to use an ArrayList instead of a String[];

Ecco il mio codice:

public class MyDialogFragment estende DialogFragment {

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setTitle("Critères Supplémentaires"); 
    builder.setNegativeButton("Cancel", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        onCancel(dialog); 
       } 
      } 
    ); 

    LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View mView = inflater.inflate(R.layout.fragment_dialog, null); 
    ListView mListView = (ListView) mView.findViewById(R.id.lvListe); 

    String[] mValues = {"Orientation", "Nombre de Chambres", "Nombre de Salle de bains", "Nombre de toilettes", "Cave", "Parking", "Garage", "Jardin"}; 

    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, mValues); 
    mListView.setAdapter(adapter); 
    mListView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String item = (String) parent.getItemAtPosition(position); 
      adapter.remove(adapter.getItem(position)); 
      adapter.notifyDataSetChanged(); 
      Toast.makeText(getActivity(), "You selected : " + item, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    builder.setView(mListView); 

    return builder.create(); 
} 

Ma adapter.remove() rende il crash dell'applicazione con questo errore:

java.lang.UnsupportedOperationException

Cosa devo fare se voglio rimuovere un oggetto?

Grazie in anticipo :)

+1

forse http://stackoverflow.com/a/3476744/1977828 aiuta? –

+0

Si prega di pubblicare il codice completo dell'attività. –

+0

Provare a eliminare l'elemento dall'array. – Saurabh

risposta

13
 String[] mValues = {"Orientation", "Nombre de Chambres", "Nombre de Salle de bains", "Nombre de toilettes", "Cave", "Parking", "Garage", "Jardin"}; 

     final ArrayList<String> list =new ArrayList<String>(Arrays.asList(mValues)); 
     final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, list); 
     mListView.setAdapter(adapter); 
     mListView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String item = list.get(position); 
       list.remove(position); 
       adapter.notifyDataSetChanged(); 
       Toast.makeText(getActivity(), "You selected : " + item, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
+0

Non esattamente quello che ho fatto, ma devo usare l'arraylist. Grazie – nsvir

5

fare questo modo

mListView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String item = (String) adapter.getItem(position); 
       adapter.remove(adapter.getItem(position)); 
       adapter.notifyDataSetChanged(); 
       Toast.makeText(getActivity(), "You selected : " + item, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
+0

Non è già quello che sto facendo? – nsvir

Problemi correlati