Java 确定当前正在使用哪个arraylist?

Java 确定当前正在使用哪个arraylist?,java,listview,arraylist,javafx,switch-statement,Java,Listview,Arraylist,Javafx,Switch Statement,我有一个由arraylist填充的listview,还有一个组合框,当选择项时,它会清除listview并用不同的arraylist填充它。这很好,但问题是,我已经将其设置为当在listview中选择某个项目时,它会根据arraylist中该项目的索引显示该项目的信息。切换arraylist时,显示的信息显然仍然使用原始arraylist的索引。有什么办法可以让我查一查,看看哪个列表被用来阻止这一切吗 listview上的侦听器: String item = lv_left.getSelecti

我有一个由arraylist填充的listview,还有一个组合框,当选择项时,它会清除listview并用不同的arraylist填充它。这很好,但问题是,我已经将其设置为当在listview中选择某个项目时,它会根据arraylist中该项目的索引显示该项目的信息。切换arraylist时,显示的信息显然仍然使用原始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
String item=lv_left.getSelectionModel().getSelectedItem()//如果单击一次,将显示选定集
lv_left.getSelectionModel().SelectEditeProperty().addListener(新的ChangeListener()){
public void已更改(observeValue您可以执行以下操作:

  • if(lv_left.getItems().containsAll(cleric_cantrips))
  • if(levels.getValue().equals(“施法者级别”)
  • 或者,您可以添加自己的布尔变量来跟踪正在使用的列表

实际上,考虑到我是如何设置的,在一个大的switch语句中使用字符串而不是索引进行过滤会更容易、更有效,所以我将这样做。尽管如此,我还是把这个问题留在这里,因为我仍然想知道我所问的问题是否可以在将来使用,以及其他可能使用的人我有这个问题。
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.