Autore Topic: Spinner items troncati  (Letto 541 volte)

Offline ccmex

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Spinner items troncati
« il: 10 Marzo 2014, 16:09:45 CET »
0
Ciao.

Ho un problema che non riesco a risolvere.

Faccio popolare uno spinner in un form Android con i dati prelevati da un file di testo su un server remoto.

Il file si chiama country.txt.

Se uso questa versione del file http://www.filesnack.com/files/ctjlom8p nello spinner la lista viene troncata sull'item:
"French Polyn"

Se invece uso quest'altra versione semplificata di country.txt http://www.filesnack.com/files/ct9sr3fn lo spinner si popola completamente senza errori, perchè?
Grazie

Codice: [Seleziona]
<Spinner
android:id="@+id/my_spinner_new"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:spinnerMode="dialog" />

......

String path = "[url]http://www.remoteHost.com/public/country.txt";
URL u = null;
try {
   u = new URL(path);
   HttpURLConnection c = (HttpURLConnection)u.openConnection();
   c.setRequestMethod("GET");
   c.connect();
   InputStream in = c.getInputStream();
   final ByteArrayOutputStream bo = new ByteArrayOutputStream();
   byte[] buffer = new byte[1024];
   in.read(buffer);
   bo.write(buffer);
   String s = bo.toString();

   final Vector<String> str = new Vector<String>();
   String[] line = s.split("\n");
   int index = 0;
   while (index < line.length) {
      str.add(line[index]);
      index++;
   }
« Ultima modifica: 10 Marzo 2014, 16:13:04 CET da ccmex »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Spinner items troncati
« Risposta #1 il: 10 Marzo 2014, 16:27:41 CET »
0
quando leggi da inputStream devi leggere tutto lo stream, tu leggi un buffer di 1024 byte che è abbastanza per il file con le sigle, ma non per quello con i nomi estesi..
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ccmex

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:Spinner items troncati
« Risposta #2 il: 10 Marzo 2014, 16:37:02 CET »
0
Grazie per il chiarimento... ma a quanto devo impostare il buffer per leggere l'intero file txt?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Spinner items troncati
« Risposta #3 il: 10 Marzo 2014, 17:43:35 CET »
0
Grazie per il chiarimento... ma a quanto devo impostare il buffer per leggere l'intero file txt?
non ha importanza quanto fai il buffer (o almeno, non tantissima), ma importa che gestisci la lettura in un ciclo
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ccmex

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:Spinner items troncati
« Risposta #4 il: 10 Marzo 2014, 17:49:22 CET »
0
Ma è già così o sbaglio qualcosa?
Codice: [Seleziona]
                                        final Vector<String> str = new Vector<String>();
                                        String[] line = s.split("\n");
                                        int index = 0;
                                        while (index < line.length) {
                                                str.add(line[index]);
                                                index++;
                                        }

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Spinner items troncati
« Risposta #5 il: 10 Marzo 2014, 19:18:53 CET »
0
Non sulla string,ma sull'input stream va fatto il ciclo! Cerca online, è codice base

Inviato dal mio Nexus 4 utilizzando Tapatalk

IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ccmex

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:Spinner items troncati
« Risposta #6 il: 10 Marzo 2014, 19:48:38 CET »
0
Grazie, ho modificato così il codice inserendo l'input stream, adesso lo spinner è completo ma le nazioni hanno perso l'ordine alfabetico ...
Codice: [Seleziona]
                                        final ByteArrayOutputStream bo = new ByteArrayOutputStream();
                                        byte[] buffer = new byte[1024];
                                        int count = in.read(buffer);
                                        while (count >= 0) {
                                                bo.write(buffer);
                                                count = in.read(buffer);
                                        }

                                        String s = bo.toString();

                                        final Vector<String> str = new Vector<String>();
                                        String[] line = s.split("\n");
                                        int index = 0;
                                        while (index < line.length) {
                                                str.add(line[index]);
                                                index++;
                                        }
« Ultima modifica: 10 Marzo 2014, 20:02:42 CET da ccmex »

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Spinner items troncati
« Risposta #7 il: 11 Marzo 2014, 09:02:16 CET »
0
sicuramente non è dovuto al ciclo...
tu sotto splitti la stringa in un array (un elemento per riga, poi fai un altro ciclo per mettere ogni elemento in un vector), ma a che pro?
Hai già l'array che è ordinato, usa quello no?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ccmex

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:Spinner items troncati
« Risposta #8 il: 11 Marzo 2014, 09:09:56 CET »
0
Grazie mille!