public class Main2Activity extends AppCompatActivity {
private ListView lv;
private List<Bean> list;
private CheckBox checkBox;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
checkBox = (CheckBox) findViewById(R.id.ckb_main);
lv = (ListView) findViewById(R.id.list_main);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ViewHolder holder = (ViewHolder) view.getTag();
holder.box.setChecked(!holder.box.isChecked());
}
});
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (Bean bean : list) {
bean.setCheck(isChecked);
}
adapter.notifyDataSetChanged();
}
});
list = new ArrayList<>();
for (int i = 0; i < 50; i++) {
Bean bean = new Bean();
bean.name = "item-" +(i+1);
list.add(bean);
}
adapter = new MyAdapter();
lv.setAdapter(adapter);
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = View.inflate(Main2Activity.this, R.layout.item2, null);
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.text_title);
holder.box = (CheckBox) convertView.findViewById(R.id.ckb);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Bean bean = list.get(position);
holder.tv.setText(bean.name);
holder.box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
bean.isCheck = isChecked;
}
});
holder.box.setChecked(bean.isCheck);
return convertView;
}
}
class ViewHolder {
TextView tv;
CheckBox box;
}
private ListView lv;
private List<Bean> list;
private CheckBox checkBox;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
checkBox = (CheckBox) findViewById(R.id.ckb_main);
lv = (ListView) findViewById(R.id.list_main);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ViewHolder holder = (ViewHolder) view.getTag();
holder.box.setChecked(!holder.box.isChecked());
}
});
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (Bean bean : list) {
bean.setCheck(isChecked);
}
adapter.notifyDataSetChanged();
}
});
list = new ArrayList<>();
for (int i = 0; i < 50; i++) {
Bean bean = new Bean();
bean.name = "item-" +(i+1);
list.add(bean);
}
adapter = new MyAdapter();
lv.setAdapter(adapter);
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = View.inflate(Main2Activity.this, R.layout.item2, null);
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.text_title);
holder.box = (CheckBox) convertView.findViewById(R.id.ckb);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Bean bean = list.get(position);
holder.tv.setText(bean.name);
holder.box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
bean.isCheck = isChecked;
}
});
holder.box.setChecked(bean.isCheck);
return convertView;
}
}
class ViewHolder {
TextView tv;
CheckBox box;
}
}
public class Bean {
String name;
boolean isCheck;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isCheck() {
return isCheck;
}
public void setCheck(boolean check) {
isCheck = check;
}
}