工具栏搜索SwipableContainer代号一

问题描述 投票:1回答:1

我正在尝试使用工具栏搜索功能来搜索许多SwipeableContainer。每个容器的顶部都有一个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个回答
0
投票

centercont中有多个组成部分。其中一个是SwipeableContainer,另一个是Label

您可以在执行强制转换之前通过与instanceof进行检查来解决此问题,但是您可能希望检查代码/组件检查器以查看该标签是什么以及是否应该在其中。

© www.soinside.com 2019 - 2024. All rights reserved.