2013-07-19 28 views
0

我有一個包含多個選項列表的列表視圖。列表由一些數據填充。我已經實施刪除已選項目的代碼。所以我想知道是否有可能在刪除之前獲得帶有標題的選定和未選擇的項目列表?在ListView中檢查已檢查的項目

這裏是刪除選中的項目代碼:

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button btnDel = (Button) findViewById(R.id.btnDel); 

    adapter = new ArrayAdapter<String>(this,Android.R.layout.simple_list_item_multiple_choice, list); 

    OnClickListener listenerDel = new OnClickListener() { 
     @Override 
     public void onClick(View v) {    
      SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions(); 
      int itemCount = getListView().getCount(); 

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

    btnDel.setOnClickListener(listenerDel);  
    setListAdapter(adapter); 
} 

回答

1

是的,這是可能的。 只需嵌入此代碼;

ArrayList<Object> myCheckedItems = new ArrayList<Object>(); 

OnClickListener listenerDel = new OnClickListener() { 
    @Override 
    public void onClick(View v) {    
     SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions(); 
     int itemCount = getListView().getCount(); 

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

謝謝,這正是我所需要的。 還有一個問題;如果我在listview中加載更多的數據,我的意思是如果我有更多的字段 - 每行有2個額外的編輯框,我應該使用自定義適配器還是可以解決一些上面的代碼的修改?這意味着如果我檢查一些項目,我想從與每個項目相關的附加編輯框中獲取數據? – Josef

+1

它總是很好通用,因爲你可以根據你的需要修改它(至少,據我所知)。所以,BaseAdapter總是一個不錯的選擇。 –

相關問題