Auswahl aus einer ListView

meisterfisch

Mitglied
Hallo,
ich habe da mal eine Frage, wo ich so nicht weiter komme.
Ich plane ein kleines Programm um Daten abzurufen,d.h. ich habe eine CD Sammlung und ich speicher für jede CD Daten :
Interpret , Titel, Genre , Laufzeit , Produktionsjahr.... usw. (diese Daten speicher ich kommaseperiert in eine Textdatei ), so das ich wie bei einer Datenbank alle infos finden kann.
So jetzt zu dem Problem. Ich lese die Textdatei aus und erstelle CD-Objekte mit den oben gennanten Daten und speicher jedes erstellte Objekt in eine ArrayList, die ich dann durchsuchen , abfragen usw. kann.
Mit JavaFX habe ich eine Listview erstellt, in der alle Alben aufgelistet werden, nicht die Objekte sondern nur der Titel eines CD Objektes.
Wenn ich in der ListView ein Titel anklicke würde ich gerne sofort auf das Objekt zurückgreifen, damit ich sofort alle Eigenschaften des CD-Objektes darstellen kann. aber ich bekomme nur den Titel. Ich habe auch schon eine (ich denke umständliche) Möglichkeit gefunden, um vom Titel auf das Objekt zu kommen (-> ich durchsuche die Liste nach diesem Eintrag und wähle dann das Objekt dazu), aber ich denke es gibt vielleicht eine einfachere Lösung. Hat jemand einen Tipp??

So sieht mein Weg aus, welcher mit nur den Titel aber nicht das Objekt ausgibt:
LV ist die ListView
Code:
LV.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>(){

     

    public void changed(ObservableValue<? extends String> ov,final String oldvalue, final String newvalue){

     

  System.out.println("Titel der CD:"+newvalue);
   

     

    }});
 
Hallo,
ja ich habe in der Liste nur die Strings gespeichert. Habe jetzt nach einigen Tagen eine möglichkeit gefunden.
In einer Observablelist kann ich Objekte speichern und in der Listview lasse ich nur eine Eigenschaft des Objekts anzeigen, aber wenn ich in der Listview etwas anklicke bekomme ich das Objekt dazu zurück:

Es funktioniert aber leider verstehe ich den Code dazu nicht ganz, scheint ein Lamda-Ausdruck zu sein!?
Damit muss ich mich wohl nochmal beschäftigen

Java:
[
LValbentitel.setCellFactory(param -> new ListCell<Alben>() {   
  @Override
  protected void updateItem(Alben item, boolean empty) {
  super.updateItem(item, empty);

  if (empty || item == null || item.getAlbumname() == null) {
  setText(null);
  } else {
  setText(item.getAlbumname());
  }
  }
  });   
   
  LValbentitel.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Alben>(){

     

    public void changed(ObservableValue<? extends Alben> ov,final Alben oldvalue, final Alben newvalue){
   
  if(newvalue!=null){
     
  LVStelleZeigeDataAuswahl(newvalue);  // diese methode übernimmt das objekt und listet alle details auf
  }
   

     

    }});  
   
   
   
   
   
   
   
   
  LValbentitel.setItems(osliste);
]
 

Zurück
Oben