【问题标题】:how to select all items at a time when cliking on select all menuitem for a listfield checkbox in blackberry在黑莓中单击为列表字段复选框选择所有菜单项时如何一次选择所有项目
【发布时间】:2012-03-07 11:48:34
【问题描述】:

我想在单击应用程序中的全选菜单项时一次选择列表字段中的所有项目。我尝试使用这样的代码..

selectall = new MenuItem("Selectall", 200, 10){
            public void run(){
            int elementLength = _elements.length;
             for(int count = 0; count < elementLength; ++count)
                {
            _listData.addElement(new ChecklistData(_elements[count], true));
            listField.insert(count);
                }
            }
        };

但我也得到了旧列表的结果。在旧列表下方,这个新列表附带了检查。如何解决这个问题。请给出你的想法。我在哪里做错了。提前谢谢..

【问题讨论】:

    标签: blackberry listfield


    【解决方案1】:

    您使用listField.insert 意味着您正在将新的ChecklistData 对象添加到列表中。这就是为什么您会在之前的列表下方获得一个全新的列表。不要添加到_listData,而是通过它并设置要检查的ChecklistData

    看起来那是一个自定义类,所以我不知道你需要做什么。如果你在_listData 中使用了CheckboxFields,你可以这样做:

    for (Enumeration e = _listdata.elements() ; e.hasMoreElements() ;) {
        CheckboxField c = (CheckboxField)e.nextElement();
        c.setChecked(true);
    }
    

    【讨论】:

    • 我用你的代码试过了。但是我得到了这样的异常 异常是:java.lang.ClassCastException。结果没有改变,只是列表元素和以前一样。我没有设置为 true .
    • 感谢您的回答。我得到了解决方案。我试过这样.. _listData.setElementAt(new ChecklistData(_elements[count], true), count);现在它对我来说可以正常工作了。
    【解决方案2】:

    感谢您的所有建议。我现在解决了我的问题..解决方案是..

    selectall = new MenuItem("Selectall", 200, 10){
                public void run(){
    
                    int elementLength = _elements.length;
                    for(int count = 0; count < elementLength; ++count)
                    {
                        _listData.setElementAt(new ChecklistData(_elements[count], true), count);
    
                    }
                }
            };
    

    【讨论】:

    • 你的方法会起作用,但你也在浪费内存。您正在创建该 ChecklistData 项目的第二个副本,只是为了设置要检查的复选框值。是的,Java 的垃圾收集器会清理它,但是您正在为手机和您的应用程序创建额外的工作,而不是一些非常简单的事情。我还是说你需要找个地方把ChecklistData的复选框设置为被选中,而不需要创建一个新的实例。
    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多