2013-01-16 166 views
0

我想实现一个场景 - 在屏幕的顶部显示一个复选框,并在顶部复选框下方有一个自定义列表视图,其中有复选框。检查所有复选框

我希望有人检查该复选框应检查所有listview复选框,反之亦然。

public class GroupMemberListAdapter extends BaseAdapter { 
     private LayoutInflater inflater = null; 
     Context Mycontext; 

     public GroupMemberListAdapter(Context context) { 
      Mycontext = context; 
      inflater = LayoutInflater.from(context); 

     } 

     public int getCount() { 
      return broadcastList.size(); 

     } 

     public Object getItem(int paramInt) { 
      return paramInt; 
     } 

     public long getItemId(int paramInt) { 
      return paramInt; 
     } 

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

      if (convertView == null) { 
       convertView = inflater.inflate(R.layout.contactcustomlayout, 
         null); 
       holder = new EventViewHolder(); 

       holder.mtvGroupMemberName = (TextView) convertView 
       .findViewById(R.id.tvGroupMemberName); 

       holder.checkbox_group_member = (CheckBox)convertView.findViewById(R.id.checkBox_GroupMember); 

       /*holder.mtvGroupMemberAbout = (TextView) convertView 
         .findViewById(R.id.tvGroupMemberAbout);*/ 

       convertView.setTag(holder); 
      } else { 
       holder = (EventViewHolder) convertView.getTag(); 
      } 
      holder.mtvGroupMemberName.setText(""+broadcastList.get(position)); 
      //holder.mtvGroupMemberAbout.setText(""+data.get(position)); 
      return convertView; 
     } 

     public class EventViewHolder { 
      private TextView mtvGroupMemberName; 
      private TextView mtvGroupMemberAbout; 
      private CheckBox checkbox_group_member; 
     } 
    } 


checkBox_selectAll.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 


       checkAllBoxes(); 

      } 
     }); 


    private void checkAllBoxes(){ 

     int size = mlvGroupBroadContact.getAdapter().getCount(); 
     System.out.println("Size of the list is:"+size); 


    } 

如何检查所有列表视图框???

回答

1

如果您ListView的选择模式CHOICE_MODE_MULTIPLECHOICE_MODE_SINGLE

private void deselectAll() { 

     getListView().clearChoices(); 

     //--as of GingerBread, clearChoices() alone is not sufficient-- 
     //--we'd have to manually un-check visible items-- 

     for (int i = 0; i < getListView().getChildCount(); i++) { 
      View c = getListView().getChildAt(i); 
      if (c instanceof Checkable) { 
       ((Checkable) c).setChecked(false); 
      } 
     } 

    } 

    private void selectAll() { 

     SparseBooleanArray sba = getListView().getCheckedItemPositions(); 

     for (int i = 0; i < getAdapter().getCount(); i++) { 
      sba.put(i, true); 
     } 

     for (int i = 0; i < getListView().getChildCount(); i++) { 
      View c = getListView().getChildAt(i); 
      if (c instanceof Checkable) { 
       ((Checkable) c).setChecked(true); 
      } 
     } 

    } 

更换getListView()getAdapter()ListView及其Adapter实例。

1

您可以使用下面的代码检查所有复选框在ListView

private void checkAllBoxes(){ 

    int size = mlvGroupBroadContact.getAdapter().getCount(); 
    System.out.println("Size of the list is:"+size); 
    CheckBox chk; 
    for(int i=0;i<size;i++) 
    { 
     chk= ((CheckBox)jobList.getChildAt(i).findViewById(R.id.chk)); 
     chk.setChecked(true); 
    } 
} 
0

更新布尔变量在适配器类从checkBox_selectAll点击听者。 并调用view.getAdapter.notifyDataSetChanged();

在getView基于这个变量设置它的状态为checked或unchecked。