首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CheckedTextView与ListView

CheckedTextView与ListView
EN

Stack Overflow用户
提问于 2016-04-27 17:53:31
回答 2查看 1.4K关注 0票数 0

我有一个列表视图,哪些项是带有复选框的CheckedTextViews。但是,每当我选中一个并滚动列表视图,它们就会隐藏,当我通过重新复制返回到它们时,它们就不再被检查了!我在互联网上读到,列表视图,当滚动时,隐藏的项目会被回收(如果我正确的话返回到默认状态)。我还读到,在自定义适配器中,我必须使用一个名为"setOnCheckedChangeListener“的方法,但是checkedTextViews没有这个特定的方法!!所以我想我的问题可能是列表。我怎么才能解决这个问题?谢谢。

更新:,所以这是我的自定义适配器和模型类。

代码语言:javascript
复制
public CustomAdapter(Context c, Model[] resource) {
    super(c, R.layout.list_item, resource);

    this.context = c;
    this.modelItems = resource;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
    convertView = inflater.inflate(R.layout.list_item, parent, false);
    cb = (CheckedTextView) convertView.findViewById(R.id.checkBox1);
    pN = (TextView) convertView.findViewById(R.id.numberId);
    pN.setText(modelItems[position].getPhoneNumber());
    cb.setText(modelItems[position].getName());

    return convertView;
}

这是模型类:

代码语言:javascript
复制
  public Model(String name, String phoneNumber, int value) {
    this.name = name;
    this.value = value;
    this.phoneNumber = phoneNumber;
}

public String getName() {
    return this.name;
}

public int getValue() {
    return this.value;
}

public String getPhoneNumber() {
    return this.phoneNumber;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-27 18:04:28

可以使用onCheckedChanged侦听器将复选框的状态保存在适配器中。然后,在创建viewHolders时,使用适配器中的数据设置复选框的选中状态。希望能帮上忙!

票数 2
EN

Stack Overflow用户

发布于 2016-04-27 18:29:20

您需要使用一个对象作为checkBox的值,如

代码语言:javascript
复制
public class FormCheck {

    private String name;
    private boolean isChecked;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isChecked() {
        return isChecked;
    }

    public void setIsChecked(boolean isChecked) {
        this.isChecked = isChecked;
    }

}

在getView()中,您可以这样做:

代码语言:javascript
复制
checkedTextView.setChecked(itemArray.get(position).getIsChecked);

    checkedTextView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (checkedTextView.isChecked())
                itemArray.get(position).setIsChecked = true;
            else
                itemArray.get(position).setIsChecked = false;
        }
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36897352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档