java–Android–ListView:Checkboxes没有保持检查状态

java–Android–ListView:Checkboxes没有保持检查状态,第1张

概述我有一个listview,有大约200个项目,我已经为复选框实现了一个自定义ArrayAdapter.我使用SparseBooleanArray来存储框的值.所有这一切都很好,但我似乎无法以图形方式更新框的检查.如果用户单击,则选中该框.但是,如果我在我的代码中调用setChecked,它对盒子本身没有影响(因此,即使它

我有一个ListvIEw,有大约200个项目,我已经为复选框实现了一个自定义ArrayAdapter.我使用SparseBooleanArray来存储框的值.

所有这一切都很好,但我似乎无法以图形方式更新框的检查.如果用户单击,则选中该框.但是,如果我在我的代码中调用setChecked,它对盒子本身没有影响(因此,即使它的值为true,也不会勾选它).

我已经通过尝试将所有框设置为真并且没有运气进行测试,即使它们都经过检查,但它们并未表明它们是正确的.不知道你需要看什么代码,但我已经在我的适配器中放了一个好的措施:

class CheckBoxArrayAdapter extends ArrayAdapter<String> implements Compoundbutton.OnCheckedchangelistener { private SparseBooleanArray checkedBoxes; Context context;public CheckBoxArrayAdapter(Context context, int resource, List<String> objects) {     super(context, resource, objects);     checkedBoxes = new SparseBooleanArray();    this.context = context;} @OverrIDe public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {     final CheckBox vIEw = (CheckBox) super.getVIEw(position, convertVIEw, parent);        //if(convertVIEw == null) {            //convertVIEw = vIEw.inflate(context, R.layout.List_item, null);        //}    vIEw.setTag(position);    vIEw.setChecked(checkedBoxes.get(position, false));    System.out.println(vIEw.getTag() + ": " + vIEw.isChecked());    vIEw.setonCheckedchangelistener(this);     return vIEw; } public boolean isChecked(int position) {     return checkedBoxes.get(position, false); } public voID setChecked(int position, boolean isChecked) {     checkedBoxes.put(position, isChecked);     notifyDataSetChanged(); } public voID toggle(int position) {     setChecked(position, !isChecked(position)); } public voID onCheckedChanged(Compoundbutton buttonVIEw, boolean isChecked) {     checkedBoxes.put((Integer) buttonVIEw.getTag(), buttonVIEw.isChecked()); } 

}

多谢你们!

解决方法:

好吧,似乎Checked Text VIEw是最好的方法,使用它们作为列表项,并将其作为您的监听器:

            public voID onItemClick(AdapterVIEw<?> parent, VIEw vIEw, int pos,long ID)         {            if(!isChecked.get(pos)) {                messageList.setItemChecked(pos, true);                isChecked.put(pos, true);            }else{                messageList.setItemChecked(pos, false);                isChecked.put(pos, false);            }            //sendEmail("[email protected]", address.get(pos) + ": " +  subject.get(pos), Jsoup.parse(message.get(pos)).toString());        }   

我之前使用的示例是由Google AndroID Dev提供的,这就是为什么我认为这是司空见惯的原因.但是,无论是否,这种方式都简单得多!

总结

以上是内存溢出为你收集整理的java – Android – ListView:Checkboxes没有保持检查状态全部内容,希望文章能够帮你解决java – Android – ListView:Checkboxes没有保持检查状态所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存