2013-07-19 25 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总是一个不错的选择。 –

相关问题