Genelde Java, JavaFX ve programlama için biraz yeni ve beynimi kıran bir sorunum var. Özel Nesneleri kullanarak JavaFX'te bir ListView'i nasıl doldurabilirim?
öğreticiler çoğunda ben yapmanın en kolay yolu (daha spesifik olarak, bir ObservableArrayList kullanarak) bir ListView doldurma konusunda bakmis o Strings bir ObservableList onu yapmak şöyle şudur:ObservableList<String> wordsList = FXCollections.observableArrayList("First word","Second word", "Third word", "Etc.");
ListView<String> listViewOfStrings = new ListView<>(wordsList);
Ancak Dizeleri kullanmak istemiyorum. Ben Kelimeler denilen yapılan özel bir nesne kullanmak istiyorum:
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);
Her Kelime nesnesi sadece 2 özelliklere sahiptir: wordString (kelimenin bir dize) ve tanımı (kelimenin tanımının bir başka dize). İkisi için de alıcılarım var.
Bunun nereye gittiğini görebilirsiniz - kod derler ve çalışır, ancak onu uygulamasında görüntülediğimde, ListView'deki her sözcüğün başlıklarını görüntülemek yerine, Word nesnesinin kendisini bir String olarak görüntüler! yerine wordsList doğrudan Kelimeler alarak yerine, wordString erişir, böyle bir yolla
ListView<Word> listViewOfWords = new ListView<>(wordsList);
:
is buradaImage showing my application and its ListView
Sorum özellikle, bu yeniden yazmak için basit bir yol var GözlemlenebilirArrayList'imin her bir kelimesinde özellik?
Sadece açık olmak gerekirse, bu işlem android için geçerli değildir ve sözcüklerin listesi en sonunda değiştirilecek, kaydedilecek ve yüklenecektir, bu yüzden wordStrings'i tutmak için başka bir dizi oluşturamıyorum. İnternette biraz araştırma yaptım ve 'Hücre Fabrikaları' denen bir şey var gibi görünüyor, ama böyle basit bir problem gibi görünmesi gereksiz yere karmaşık görünüyor ve daha önce de belirttiğim gibi, ben biraz Programlama gelince bir acemi.
Herkes yardımcı olabilir mi? Bu benim ilk kez burada, bu yüzden kodumun yeterince eklenmemesi veya yanlış bir şey yapmam durumunda özür dilerim.
Çok detaylı cevabınız için çok teşekkürler! Şimdilik, toString() yöntemini geçersiz kılmaya çalışacağım, ancak daha iyi anlamak için Hücre Fabrikaları üzerinde daha fazla okuma yapacağım ve ardından öneriye göre kullanmak için uygulamayı değiştireceğim. Sadece her bir kelimenin 'tanımını' bu düzenleme düğmesiyle değiştireceğim ve liste görünümü sadece 'kelime' özelliğini izleyecektir, böylece 'tanım' ile ilgili değişiklikleri izlemeniz gerekmez. –