朋友们,
我正在使用以下代码来检查/取消选中listview中的复选框
public AdapterBank(Context context,List<Bank> list,ListView lst) {
mInflater = LayoutInflater.from(context);
this.context = context;
listview = lst;
banks= list;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_banks, null);
holder = new ViewHolder();
holder.bankName = (TextView) convertView.findViewById(R.id.bankName);
holder.bankIcon = (ImageView) convertView.findViewById(R.id.bankIcon);
holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Bank bank = getItem(position);
holder.checkBox.setonCheckedchangelistener(new OnCheckedchangelistener() {
@Override
public void onCheckedChanged(CompoundButton checkBoxView, boolean isChecked) {
banks.get(position).setSelected(isChecked);
//Toast.makeText(context, "" + position, Toast.LENGTH_LONG).show();
}
});
if(bank.isSelected())
{
holder.checkBox.setChecked(true);
}else
{
holder.checkBox.setChecked(false);
}
当我选中任何复选框并滚动它.选中复选框不再检查.
任何人指导我在这做什么错?
解决方法:
您可以尝试使用静态侦听器(可能无法纠正您的错误,但肯定会降低您正在创建的“临时”对象的数量):
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_banks, null);
holder = new ViewHolder();
holder.bankName = (TextView) convertView.findViewById(R.id.bankName);
holder.bankIcon = (ImageView) convertView.findViewById(R.id.bankIcon);
holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBox);
holder.checkBox.setonCheckedchangelistener(checkListener);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Bank bank = getItem(position);
holder.checkBox.setTag(bank);
holder.checkBox.setChecked(bank.isSelected());
return convertView;
}
private OnCheckedchangelistener checkListener = new OnCheckedchangelistener() {
@Override
public void onCheckedChanged(CompoundButton checkBoxView, boolean isChecked) {
Bank b = (Bank) checkBoxView.getTag();
b.setSelected(isChecked);
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。