2016-03-23 12 views
-1

Bu teknolojiye daha fazla aşina olmak için JavaFX ile bazı elçi geliştiriyorum.Gözlemsel özelliklerdeki değişikliklerin nasıl gözlemleneceği GözlemlenebilirList

Contact iki temel özelliğe sahiptir: User ve son Message.

En son mesajları ile temasların

  1. liste İki çözümlere şimdiye kadar

    İlk çözüm geldi

adına göre sıralanmış temasların

  • listesini göstermek gerekir, Contact'u değiştirilemez hale getirmektir. Dolayısıyla, yeni bir mesaj geldiğinde veya kullanıcının bilgileri değiştiğinde her zaman kontağın değiştirilmesi gerekir. Çalışıyor, ancak numaralı İletişim Bilgileri, ListView'de numaralı bağlantıda yanıp sönüyor.

    İkinci çözümObjectProperty kullanmaktır: eklemek için özel ObservableList oluşturmak zorunda Bu durumda

    public class Contact { 
        private final ObjectProperty<User> user = ...; 
        private final ObjectProperty<Message> lastMessage = ...; 
    } 
    

    /listeden/çıkarıldı Contact ilave edilir Contact özelliklerindeki/dinleyici çıkarın. Bu, her iki liste otomatik olarak sıralanması gerektiğinden gereklidir. Bu nedenle, her iki çözümün dezavantajları vardır.

    Lütfen hedeflerime nasıl ulaşacağınıza dair önerilerinizi verin. FXCollections sınıfında

  • +0

    Olası yinelenen [Java 8 SortedList TableView ferahlatıcı değil] (http://stackoverflow.com/questions/21171948/java-8-sortedlist-tableview-not-refreshing) – kleopatra

    +0

    evet, kesinlikle - çok benzer bir sorun tam olarak aynı ilaç ile ;-) – kleopatra

    cevap

    2

    , liste öğeleri özellikler listesi değişim olaylarını kovmalı listesini anlatmak için bir "çıkarıcı" işlevini kullanan bir yöntem vardır:

    https://docs.oracle.com/javase/8/javafx/api/javafx/collections/FXCollections.html#observableArrayList-javafx.util.Callback-

    Bu verecektir İkinci çözümünüzle aynı yaklaşım, ancak siz dinleyicileri kendiniz yönetmek için kod yazmanıza gerek kalmadan.

    +0

    Teşekkür ederim! Bu yöntemi ve çıkarıcıları bir şekilde özledim. –

    İlgili konular