我已經嘗試了幾種不同的方法從列表中獲取選定的項目(請參閱下面的代碼),但我試過的所有項目只返回列表中的第一個項目,而不管實際選擇了哪個項目。在視覺上它似乎工作,因爲正確的項目點擊時突出顯示。如何從LibGDX列表中獲取所選項目?
作爲我想要做的一般概述,我有一個包含所有保存的預設文件(json文件)的文件夾,然後我將所有文件的名稱讀入到字符串列表中,從這個列表中可以選擇一個特定的預設,然後我有一個單獨的「加載」文本按鈕來加載從列表中選擇的項目。但是如上所述,當點擊加載按鈕時,不會從列表中加載正確的項目。
這裏是我的代碼:
public class PresetLoadMenu extends Menu {
private GUI gui;
private SaveManager saveManager;
private Table scrollPaneContainerTable;
private ScrollPane scrollPane;
private Table scrollTable;
private List<String> presetList;
private TextButton loadButton;
private FileHandle rootFolderHandle = Gdx.files.external(「presets/」);
public PresetLoadMenu(GUI gui){
this.gui = gui;
refreshList();
scrollTable = new Table();
scrollTable.add(presetList);
scrollPane = new ScrollPane(scrollTable);
scrollPaneContainerTable = new Table();
scrollPaneContainerTable.add(scrollPane).size(this.getWidth(), this.getHeight()*.2f);
add(scrollPaneContainerTable);
row();
loadButton = new TextButton("LOAD", gui.menuStyles.getMenuOkCancelButtonStyle());
loadButton.addCaptureListener(new ChangeListener(){
@Override
public void changed(ChangeEvent event, Actor actor){
// METHOD 1:
// System.out.println("SELECTED PRESET: " + presetList.getSelected());
// METHOD 2:
// System.out.println("SELECTED PRESET: " + presetList.getSelection().getLastSelected());
// METHOD 3:
// for (int i=0; i<presetList.getSelection().size(); i++){
// System.out.println("INDEX: " + i + " SELECTED PRESET: " + presetList.getSelection().toArray().get(i));
// }
}
});
add(loadButton).size(loadButton.getWidth(), loadButton.getHeight());
}
public void refreshList(){
FileHandle[] files = rootFolderHandle.list();
Array<String> namesArray = new Array<String>();
for(FileHandle file: files) {
namesArray.add(file.name());
}
presetList = new List<String>(gui.menuStyles.getListStyle());
presetList.setItems(namesArray);
}
}
最後一個方法我用一個for循環只是爲了看它是否會打印出來,我點擊了其他項目試過了,但它仍然印的第一個項目只有一個時間,並沒有檢測到我點擊了其他任何項目。
的,什麼是錯用'presetList.getSelected()'? – noone
該問題實際上是我發佈的課程之外的其他內容,因此,現在我找出問題所在,presetList.getSelected()可能工作得很好。但在我弄明白之前,我已經將List換成了ButtonGroup,對我來說實際上比使用List更好,所以它成功了。該列表有一個內置的監聽器,用於在觸摸時選擇該項目,因此當試圖向上或向下滾動時,項目會被選中。有了一個按鈕,我可以爲偵聽狀態設置一個偵聽器,這正是我想要的。謝謝。 – Tekkerue
所以請回答你的問題關閉它:-) – Sebastian