2013-08-26 9 views
6

Chciałbym usunąć klikniętą pozycję w ListView.Usuń element w ArrayAdapter <String> w ListView

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

Oto mój kod:

public class MyDialogFragment rozciąga 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(); 
} 

Ale adapter.remove() powoduje awarię aplikacji z tego błędu:

java.lang.UnsupportedOperationException

Co mam zrobić, jeśli chcę usunąć przedmiot?

góry dzięki :)

+1

może http://stackoverflow.com/a/3476744/1977828 pomaga? –

+0

Proszę zaksięgować swój pełny kod aktywności. –

+0

Spróbuj usunąć element z tablicy. – Saurabh

Odpowiedz

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

Nie do końca to, co zrobiłem, ale muszę użyć arraylist. Dzięki – nsvir

5

to zrobić drogę

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

Czy to już nie jest to, co robię? – nsvir

Powiązane problemy