私はチェックボックス付きのカスタムリストビューを持っています。メインレイアウトには「すべて選択」チェックボックスがあります。 「すべて選択」チェックボックスを選択すると、すべてのチェックボックスが選択されます。私が望むのは、リストビューチェックボックスのいずれかを選択解除すると、「すべて選択」チェックボックスも選択解除されなければならないということです。私はhereと表示しようとしましたが、動作しません。リストビューチェックボックスの選択を解除すると、すべてのリストビューチェックボックスが選択解除されます。SelectAllチェックボックスをオフにするチェックボックスをオフにする場合
public class ContactsListAdapter extends BaseAdapter {
Context ctx;
LayoutInflater lInflater;
ArrayList<Contacts> objects;
CheckBox _selectall;
ContactsListAdapter(Context context, ArrayList<Contacts> products, CheckBox selectall) {
ctx = context;
objects = products;
lInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
_selectall=selectall;
}
@Override
public int getCount() {
return objects.size();
}
@Override
public Object getItem(int position) {
return objects.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = lInflater.inflate(R.layout.contact_item, parent, false);
}
//final Contacts p = getProduct(position);
Contacts contacts = objects.get(position);
((TextView) view.findViewById(R.id.tvName)).setText(contacts.getName());
((TextView) view.findViewById(R.id.tvMobile)).setText(contacts.getMobile());
((TextView) view.findViewById(R.id.tvEmail)).setText(contacts.getEmail());
final CheckBox cbBuy = (CheckBox) view.findViewById(R.id.cbBox);
cbBuy.setTag(position);
cbBuy.setChecked(contacts.box);
if(_selectall.isChecked()){
_selectall.setChecked(true);
}else{
_selectall.setChecked(false);
}
cbBuy.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
getProduct((Integer) buttonView.getTag()).box = isChecked;
if(_selectall.isChecked()){
_selectall.setChecked(true);
}else{
_selectall.setChecked(false);
}
notifyDataSetChanged();
}
});
_selectall.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(_selectall.isChecked()){
for(int i=0; i<objects.size();i++){
getProduct(i).box = true;
cbBuy.setTag(i);
cbBuy.setChecked(objects.get(i).box);
}
}else{
for(int i=0; i<objects.size();i++){
getProduct(i).box = false;
cbBuy.setTag(i);
cbBuy.setChecked(objects.get(i).box);
}
}
notifyDataSetChanged();
}
});
return view;
}
Contacts getProduct(int position) {
return ((Contacts) getItem(position));
}
ArrayList<Contacts> getBox() {
ArrayList<Contacts> box = new ArrayList<Contacts>();
for (Contacts p : objects) {
if (p.box)
box.add(p);
}
return box;
}
}
これを確認してくださいhttp://www.cnblogs.com/vus520/archive/2011/02/27/2561875.html –