2013-10-11 5 views
1

Как удалить несколько строк из списка с помощью приведенного ниже кода, и я использую MultiChoiceModeListener.Android Удалите несколько элементов из списка ListView

MainActivity

list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
     list.setMultiChoiceModeListener(new MultiChoiceModeListener() { 

      @Override 
      public void onItemCheckedStateChanged(ActionMode mode, 
        int position, long id, boolean checked) { 
       // Here you can do something when items are selected/de-selected 
       final int checkedCount = list.getCheckedItemCount(); 
       // Update the title in the CAB 
       mode.setTitle(checkedCount + " Selected"); 

      } 
    @Override 
      public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
       switch (item.getItemId()) { 
       case R.id.menu_clear: 
        deleteSelectedItems(item.getItemId()); 
        mode.finish(); 
        return true; 
       default: 
        return false; 
       } 
      } 
      public void deleteSelectedItems(int id) { 
       adapter.remove(adapter.getItem(id)); //The method remove(Object) is undefined for the type ListViewAdapter 
      } 

ListViewAdapter

public class ListViewAdapter extends BaseAdapter { 

    // Declare Variables 
    Context context; 
    String[] rank; 
    String[] country; 
    String[] population; 
    LayoutInflater inflater; 
    View itemView; 

    public ListViewAdapter(Context context, String[] rank, String[] country, 
      String[] population) { 
     this.context = context; 
     this.rank = rank; 
     this.country = country; 
     this.population = population; 
    } 

    @Override 
    public int getCount() { 
     return rank.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     // Declare Variables 
     TextView txtrank; 
     TextView txtcountry; 
     TextView txtpopulation; 

     inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     itemView = inflater.inflate(R.layout.listview_item, parent, false); 


     txtrank = (TextView) itemView.findViewById(R.id.rank); 
     txtcountry = (TextView) itemView.findViewById(R.id.country); 
     txtpopulation = (TextView) itemView.findViewById(R.id.population); 


     txtrank.setText(rank[position]); 
     txtcountry.setText(country[position]); 
     txtpopulation.setText(population[position]); 

     return itemView; 
    } 

EDITED

@Override 
      public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
       switch (item.getItemId()) { 
       case R.id.menu_clear: 

        int count = adapter.getCount(); 
        for (int i = 0; i < count; i++) { 
        adapter.remove(adapter.getItem(i)); 
        } 
        adapter.notifyDataSetChanged();//The method remove(Object) is undefined for the type ListViewAdapter 
        mode.finish(); 
        return true; 
       default: 
        return false; 
       } 
      } 
+0

Что ваш вопрос? – CommonsWare

+0

Я пытаюсь удалить несколько строк из списка. –

+1

Это не вопрос. – CommonsWare

ответ

0

в вашем onItemCheckedStateChanged отслеживать все позиции или идентификаторами, которые были проверены (в списке или что нибудь).

затем, когда нажата какая-либо кнопка меню, вы прокручиваете все позиции или идентификаторы и удаляете их из своего набора данных.

после вы удалили их называют notifyDatasetChanged на адаптере

+0

Значит, вы подразумеваете, что все будет сделано внутри класса deleteSelectedItems (int id)? –

+0

хорошо, что это не класс, который вызывает метод, но нет, вам не нужно это делать. сделайте цикл for в 'onActionItemClicked' и зациклируйте список идентификаторов и просто передайте идентификатор этому методу, а затем удалите элемент из своего набора данных. – tyczj

+0

. Я получил эту ошибку. Метод remove (Object) не определен для типа ListViewAdapter. Что мне нужно сделать ? Пожалуйста помоги –

Смежные вопросы