【问题标题】:Determine which arraylist is currently being used?确定当前正在使用哪个数组列表?
【发布时间】:2018-02-01 13:40:51
【问题描述】:

I have a listview being populated by an arraylist, and a combobox that, when items are selected, clear the listview and populate it with a different arraylist.这很好用,但问题是,我已经设置好了,当在列表视图中选择一个项目时,它会根据数组列表中的项目索引显示有关该项目的信息。切换arraylists时,显示的信息显然还是在使用原arraylist的索引。有什么方法可以查看正在使用哪个列表来阻止这种情况?

listview 上的监听器:

String item = lv_left.getSelectionModel().getSelectedItem();    //if clicked once, sets selected to appear
                lv_left.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>(){
                    public void changed(ObservableValue<? extends String> ov, String old_val, String new_val){
                        tooltip.setText(new_val);
                        int index = lv_left.getSelectionModel().getSelectedIndex();
//Here would be my switch statement for the array index

我最初是这样填充列表视图的:

ListView<String> lv_left = new ListView<>
    (FXCollections.observableArrayList(cleric_cantrips));

这是我切换列表视图的时候:

levels.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>(){
        public void changed(ObservableValue<? extends String> ov, String old_val, String new_val){
            String value = levels.getValue();

            switch (value){
            case "Caster Level": lv_left.getItems().clear(); lv_left.getItems().addAll(cleric_cantrips);                 
            break;
            case "Level 1": lv_left.getItems().clear(); lv_left.getItems().addAll(cleric_lvl_1);        
            break;
//etc.

这可行吗?由于我用lv_left.getItems().addAll(cleric_lvl_1); 更改列表中的项目,有没有办法可以创建if 语句或在我有索引的switch 语句的地方,所以如果它是cleric_cantrips然后使用该数组列表作为索引?还是我必须手动执行此操作并使用基于项目字符串的开关?两者都可以,但我觉得使用索引会更简洁,更短一些,而不是必须在 switch 中输入每个项目。

【问题讨论】:

  • 实际上,看看我是如何设置的,将它放在一个由字符串而不是索引过滤的大型 switch 语句中会更容易和更有效,所以这就是我要做的。话虽如此,我将把这个问题留在这里,因为我仍然想知道我所问的内容是否可能供将来使用,以及其他可能有这个问题的人。

标签: java listview arraylist javafx switch-statement


【解决方案1】:

你可以这样做:

  • if(lv_left.getItems().containsAll(cleric_cantrips)))
  • if(levels.getValue().equals("Caster level"))
  • 或者您可以添加自己的布尔变量来跟踪正在使用的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多