【问题标题】:Customlistview with checkbox- while scrolling check state is interchanged带有复选框的Customlistview-在滚动检查状态时互换
【发布时间】:2013-02-22 22:21:42
【问题描述】:

我使用带有复选框的自定义列表视图。在滚动列表视图时,检查状态被互换如何控制互换并将其设置为默认值,即我选择的检查项目

供您参考的代码

public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        if (convertView == null) 
        {
            convertView=lInflater.inflate(R.layout.subtag, null);
            holder=new viewHolder();
            holder.check=(CheckBox)convertView.findViewById(R.id.subtag_checkCatagory);
            holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    // TODO Auto-generated method stub
                    if(isChecked)
                    {
                        System.out.println("checked item:"+buttonView.getText());
                        temp.add(buttonView.getText().toString());
                    }
                    else
                    {
                        temp.remove(buttonView.getText().toString());

                    }
                }
            });
            convertView.setTag(holder);
        }
        else
        {   
            holder = (viewHolder) convertView.getTag();
        }


        holder.check.setText(list.get(position));

        return convertView;
    }

【问题讨论】:

  • 我终于找到了我的问题的答案

标签: android


【解决方案1】:

我终于找到了上述问题的答案。在此代码中,当我们滚动 ListView 时,检查值和 TextView 值没有改变

步骤

  1. customlistview 使用 ArrayAdapter 而不是 BaseAdapter
  2. 为复选框选中/取消选中和 textview 获取/设置编写 bojo 类
  3. 按照我在下面的说明,专注于 getview()

代码

public View getView(int position, View convertView, ViewGroup parent) {
    View view = null;

    if (convertView == null) {
        LayoutInflater inflator = context.getLayoutInflater();
        view = inflator.inflate(R.layout.subtag, null);
        final ViewHolder viewHolder = new ViewHolder();
        viewHolder.text = (TextView) view.findViewById(R.id.subtag_textCatagory);
        viewHolder.check = (CheckBox) view.findViewById(R.id.subtag_checkCatagory);

        viewHolder.text.setOnClickListener(this);
        viewHolder.check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
                        TagBojo element = (TagBojo) viewHolder.check.getTag();
                        element.setSelected(buttonView.isChecked());

                        System.out.println(element.getListName());
                });
        view.setTag(viewHolder);
        viewHolder.check.setTag(list.get(position));
    } else {
        view = convertView;
        ((ViewHolder) view.getTag()).check.setTag(list.get(position));
    }
    ViewHolder holder = (ViewHolder) view.getTag();
    holder.text.setText(list.get(position).getListName());
    holder.check.setChecked(list.get(position).getSelected());
    return view;
}

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 2012-10-16
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    相关资源
    最近更新 更多