Problém s načítáním do ze souboru do listview – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s načítáním do ze souboru do listview – Java – Fórum – Programujte.comProblém s načítáním do ze souboru do listview – Java – Fórum – Programujte.com

 

Honza
~ Anonymní uživatel
451 příspěvků
11. 5. 2017   #1
-
0
-

Ahoj, chtěl bych někoho poprosit, jestli by mi nemohl poradit s programem. Dělám GUI program, ve kterém bych chtěl mít listview a v něm v tabulce zobrazené jméno + čas hráče(uživatele). To jméno a čas jsem si nejdřív vytvořil jako objekt Player a uložil do observablelistu a poté ho zapsal do txt souboru. Teď bych po spuštění programu a zobrazení listview chtěl, aby se data z toho souboru zobrazila v tom listviewu, jenže to mi nějak nejde zrealizovat. Nevěděl by někdo, jak to udělat? Byl bych moc vděčný za jakoukoli radu

Zatím jsem si udělal načítání ze souboru přes inputstream, jenže nevím jak to propojit.

Toto je zatím můj kód:

private static ObservableList<Player> statistics = FXCollections.observableArrayList();
private static ListView playersList = new ListView(statistics);
...

public void loadFile() throws IOException {
        File f = new File("Score.txt");
        FileInputStream fis = new FileInputStream(f);
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        StringBuilder out = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            out.append(line);
        }
    }
Nahlásit jako SPAM
IP: 2001:718:1c01:260:a8a9:cf...–
Honza
~ Anonymní uživatel
451 příspěvků
11. 5. 2017   #2
-
0
-

Ještě jsem zapomněl dopsat, že ta metoda loadFile() není dodělaná, protože nevím, jak jí spojit s tím listview, tak se nedivte.

Nahlásit jako SPAM
IP: 2001:718:1c01:260:a8a9:cf...–
Matrix17
~ Anonymní uživatel
300 příspěvků
11. 5. 2017   #3
-
0
-

  1. Záleží, jak sis uložil hráče do souboru (je to CSV soubor nebo co to je?)
  2. Je to tvůj soubor, takže znáš i jeho strukturu, takže jak sis je tam uložil tak si je načti nebo-li naparsuj, například pokud máš co řádek to jeden hráč, tak si načteš řádek, rozdělíš si ho na jednotlivé hodnoty například podle středníků nebo jiného oddělovače
  3. když máš hodnoty načtený v nějaký kolekci tak si je přesypeš do toho listview

Nahlásit jako SPAM
IP: 176.74.134.–
Honza
~ Anonymní uživatel
451 příspěvků
11. 5. 2017   #4
-
0
-

#3 Matrix17
Nene, uložil jsem si je jako soubor.TXT.

Přesně tak to mám, jeden řádek je jméno + čas.

Jak jako v kolekci? Myslíš v nějakém arrayListu nebo pořád v tom souboru?? To je právě to, co mi nejde, přesypat data do toho listview

Nahlásit jako SPAM
IP: 2001:718:1c01:260:157b:5f...–
Matrix17
~ Anonymní uživatel
300 příspěvků
13. 5. 2017   #5
-
+1
-
Zajímavé
Kit +

#4 Honza
Kolekce je jak píšeš například ten arrayList, Mapa, Set...

Co ti nejde? Však otevřeš soubor a přečteš data a ty pak jen uložíš do toho listview.

Čteční ze souboru:

try(BufferedReader br = new BufferedReader(new FileReader("cesta k soubor.txt")))
    {
      String line = br.readLine();
      List<Player> players = new ArrayList<>();

      while (line != null)
      {
        System.out.println("Radek souboru: " + line);

        players.add(new Player(...))

        line = br.readLine();
      }
    }
    catch (Exception ex)
    {
      ex.printStackTrace();
    }

To co si načteš si uložíš do svojí třídy tj. Player.

Když máš takhle načtenej a naparsovanej soubor tak už ho jen překlopíš do toho listview.

playersList.setItems(FXCollections.observableArrayList(players));

Nahlásit jako SPAM
IP: 213.226.237.–
Honza
~ Anonymní uživatel
451 příspěvků
13. 5. 2017   #6
-
0
-

#5 Matrix17
Díky moc za pomoc, už mi to krásně funguje. Nakonec jsem to udělal takto:

public static void loadFile() throws FileNotFoundException, IOException {
        BufferedReader br = new BufferedReader(new FileReader("Score.txt"));
        String line = br.readLine();
        while (line != null) {
            statistics.add(new Player(line.substring(0, 6), 			
            line.substring(line.length() - 5, line.length())));
            line = br.readLine();
        }
        playersList.setItems(FXCollections.observableArrayList(statistics));

    }

Už se mi to jakž takž povedlo vymyslet po tvém prvním komentáři, jenže já na konci while závorky zapomněl znova zavolat readLine(), takže mi program bez jakékoli hlášky prostě spadnul a já to v tom neviděl, takže jsi mě posledním komentářem zachránil. :D ještě jednou díky moc za pomoc.

Nahlásit jako SPAM
IP: 2a00:1028:96d2:3baa:7461:...–
gna
~ Anonymní uživatel
1891 příspěvků
13. 5. 2017   #7
-
0
-

#6 Honza
A přesně proto se to dělá jedním readem, jak jsi to měl předtím.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Problem s načítáním znaku — založil ccccdddd

Problém s načítáním webu — založil jAkErCZ

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý