在CustomAdapter ListView中复选框问题 [英] ListView Checkbox problem in CustomAdapter

查看:170
本文介绍了在CustomAdapter ListView中复选框问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

朋友,

我用下面的code,检查里面的ListView /取消选中checkboxs

i am using following code to check/uncheck checkboxs inside 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);
            }

当我检查任何复选框,并滚动它。即选中的复选框没有更多的检查。 任何一个指导我什么错误,我在这里干什么?

when i check any checkbox and scroll it. that checked checkbox is not more checked. any one guide me what mistake am i doing here?

推荐答案

您可以尝试有一个静态监听器(可能不纠正你的错误,但肯定会降低你正在创建的临时对象的数量):

You could try to have a static listener (might not correct your bug but will surely lower the number of "temp" objects you are creating):

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);
   }
});

这篇关于在CustomAdapter ListView中复选框问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆