【问题标题】:Toolbar Search SwipableContainer Codename One工具栏搜索 SwipableContainer 代号一
【发布时间】:2020-03-12 10:16:59
【问题描述】:

我正在尝试使用工具栏搜索功能来搜索多个 SwipeableContainers。每个容器顶部都有一个 MultiButton,左下角和右下角有多个按钮。本质上,我从数据库接收数据并循环通过添加 SwipeableContainer 的结果,并使用 sc.setName() 为每个设置一个名称(MultiButton 的 Line1)。然后我尝试使用以下代码进行搜索:

代码如下:

hi.getToolbar().addSearchCommand(e -> {
        String text = (String)e.getSource();
        if(text == null || text.length() == 0) {
            // clear search
            for(Component cmp : centercont) {
                cmp.setHidden(false);
                cmp.setVisible(true);
            }
            centercont.animateLayout(150);
        } else {
            text = text.toLowerCase();
            for(Component cmp : centercont) {                
                SwipeableContainer sc = (SwipeableContainer)cmp;
                String scName = sc.getName();
                boolean show = text.length() == 0 || scName.toLowerCase().contains(text);
                sc.setHidden(!show);
                sc.setVisible(show);
            }
            centercont.animateLayout(150);
        }
        }, 4);

在搜索中输入第一个字符后,我得到这个异常:java.lang.ClassCastException: com.codename1.ui.Label 不能转换为 com.codename1.ui.SwipeableContainer。如果我在错误对话框中按“确定”,则搜索会按预期过滤该 1 个字符的选项。对于下一个字符,我得到相同的异常和结果,依此类推。

我希望能得到一些关于我哪里出错的指导。

【问题讨论】:

    标签: search codenameone toolbar


    【解决方案1】:

    centercont 中有多个组件。其中一个是SwipeableContainer,另一个是Label

    您可以通过在进行演员表之前检查instanceof 来解决它,但您可能需要检查您的代码/组件检查器以查看该标签是什么以及它是否应该在那里。

    【讨论】:

    • 谢谢 Shai,检查 'instanceof' 有效。我使用“标签”让用户知道向左或向右滑动等,所以这是我想要保留的东西。非常感谢!
    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多