【问题标题】:Adapter with checkbox checked random items带有复选框选中随机项目的适配器
【发布时间】:2014-01-17 23:55:54
【问题描述】:

我想为我的干预模型创建适配器。 项目将有两个带有复选框的文本视图。发明模型只有许多字符串字段。 我的适配器扩展了Basedapter:

public class CBAdapter extends BaseAdapter {

private LinkedList<Intervention> mData;
private Context mContext;

public CBAdapter(Context context, LinkedList<Intervention> data) {
    mContext = context;
    this.mData = data;
}

static class ViewHolder {
    TextView tvTopText;
    TextView tvLowText;
    CheckBox checkbox;
}

@Override
public int getCount() {
    return mData.size();
}

@Override
public Intervention getItem(int position) {
    return mData.get(position);
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;
    if (convertView == null) {
        viewHolder = new ViewHolder();
        convertView = LayoutInflater.from(mContext).inflate(R.layout.intervention_select_item,
                null);
        viewHolder.tvTopText = (TextView) convertView.findViewById(R.id.tvTopText);
        viewHolder.tvLowText = (TextView) convertView.findViewById(R.id.tvBotText);

        viewHolder.checkbox = (CheckBox) convertView.findViewById(R.id.cbInterCheck);

        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    final int pos = position;
    viewHolder.tvTopText.setText(mData.get(position).getName());
    viewHolder.tvLowText.setText(mData.get(position).getGlobalInterId());

    viewHolder.checkbox
            .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    mData.get(pos).setSelected(isChecked);
                }
            });
    return convertView;
}

public void setData(LinkedList<Intervention> data) {
    this.mData = data;
    this.notifyDataSetChanged();
}

}

但是当我点击第三个项目时,它会检查 3 和 13 个项目。 什么问题?以及如何使用复选框创建适配器? :(

【问题讨论】:

    标签: android checkbox


    【解决方案1】:

    您没有正确实施“convertView”回收。此行不抛出错误,但不正确:

    viewHolder = (ViewHolder) convertView.getTag();
    

    "getTag" 返回类型 "Object" 所以它会强制转换,但这不是你想要的。应该是:

    viewHolder = (ViewHolder) convertView;
    

    那么你的视图应该都有自己的 CheckBox。

    【讨论】:

      猜你喜欢
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多