我对Java,JavaFX和一般编程还是有点陌生,但是我遇到了一个困扰我的问题。
在大多数教程中,我查找了有关填充ListView(更具体地说,使用ObservableArrayList)的方法,最简单的方法是从字符串的ObservableList中进行填充,如下所示:
ObservableList<String> wordsList = FXCollections.observableArrayList("First word","Second word", "Third word", "Etc.");
ListView<String> listViewOfStrings = new ListView<>(wordsList);
但是我不想使用字符串。我想使用我制作的名为Words的自定义对象:
ObservableList<Word> wordsList = FXCollections.observableArrayList();
wordsList.add(new Word("First Word", "Definition of First Word");
wordsList.add(new Word("Second Word", "Definition of Second Word");
wordsList.add(new Word("Third Word", "Definition of Third Word");
ListView<Word> listViewOfWords = new ListView<>(wordsList);
每个Word对象只有两个属性:wordString(单词的字符串)和definition(另一个字符串,它是单词的定义)。我既有getter也有setter。
您可以看到代码的编译和工作原理,但是当我在应用程序中显示它时,而不是在ListView中显示每个单词的标题时,它会将Word对象本身显示为字符串!
该图显示了我的应用程序及其ListView
我的问题是,具体来说,是否有一种简单的方法可以重写:
ListView<Word> listViewOfWords = new ListView<>(wordsList);
以这种方式,而不是直接从wordsList中获取Words,它访问我的observableArrayList的每个Word中的wordString属性?
请注意,这不适用于android,单词列表最终将被更改,保存和加载,因此我不能仅仅制作另一个数组来保存wordStrings。我已经在网络上做了一些研究,似乎有一个叫做“细胞工厂”的东西,但是看起来如此简单的问题似乎不必要地复杂,正如我之前所说,我有点编程方面的新手。
有人可以帮忙吗?这是我第一次来,所以如果我没有包含足够的代码或者做错了什么,我感到抱歉。
哆啦的时光机
相关分类