2017-02-05 11 views
2

チェックされているアイテムだけを削除することができません。 私はすでにそれらを目に見えないものにしようとしましたが、それは仕事には及ばなかったのです。それはちょうどいくつかのランダムなアイテムを見えなくしました。ここ
は、ListViewコントロールを移入するために私のコードです:再び選択したすべてのアイテムをAndroidのチェック可能リストビューから削除します。

public void removeSelectedItems(MenuItem menuItem){ 
    for(int i=0; i<selectedItemsPos.size(); 
     orderArray.remove(selectedItemsPos.get(i)); 
    } 
    adapter.notifyDataSetChanged(); 
} 

答えて

0

SparseBooleanArrayを使用して、チェックされたアイテムを取得し、同じリストビューとリストビューを削除します。

public class MainActivity extends Activity 
    { 
     ListView lv; 
     ArrayAdapter<String> adapter; 
     Button delete; 
     ArrayList<String> data = new ArrayList<String>(); 
     SparseBooleanArray mCheckStates ; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.test); 
      lv = (ListView)findViewById(R.id.listView1); 
      lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
      delete = (Button)findViewById(R.id.button1); 
      data.add("Windows"); 
      data.add("Android"); 
      data.add("Apple"); 
      data.add("Blackberry"); 
      adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_multiple_choice, data); 
      lv.setAdapter(adapter); 

      delete.setOnClickListener(new OnClickListener() 
      { 
      @Override 
      public void onClick(View v) 
      { 

       SparseBooleanArray checkedItemPositions = lv.getCheckedItemPositions(); 
       int itemCount = lv.getCount(); 

       for(int i=itemCount-1; i >= 0; i--){ 
        if(checkedItemPositions.get(i)){ 
         adapter.remove(data.get(i)); 
        } 
       } 
       checkedItemPositions.clear(); 
       adapter.notifyDataSetChanged(); 

      } 
      }); 
     } 
    } 
+0

おかげでうまくいった! – Gabsii

2

コールsetListAdapter():

public void populate(){ 
     String [] result = getIntent().getStringExtra(EXTRA_RESULT).split(";"); 
     orderArray = new ArrayList<>(Arrays.asList(result)); 
     chl = (ListView) findViewById(R.id.checkableList); 

     chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     adapter = new ArrayAdapter<>(this, R.layout.rowlayout, R.id.txt_lan, orderArray); 
     chl.setAdapter(adapter); 
     chl.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       CheckedTextView ctv = (CheckedTextView) view; 

       if(ctv.isChecked()){ 
        selectedItemsPos.add(position); 
       } 
        selectedItemsPos.remove(position); 
       } 
      } 
     }); 
    } 

、ここでは、私が項目を削除しようとした方法です。今回は空のArrayListを使用します。 thisページで 前に回答しています。

+0

すべてのエントリを削除しません。選択されたものだけ。 – Gabsii

+0

このリンクをチェックし、有用かどうかを確認してください。 http://stackoverflow.com/questions/11946733/want-to-remove-the-selected-item-from-listview –

関連する問題