Autore Topic: ListView senza sapere il numero di elementi da inserire  (Letto 505 volte)

Offline Damien

  • Utente junior
  • **
  • Post: 63
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lenovo ZUK Z1
  • Sistema operativo:
    Windows 10
ListView senza sapere il numero di elementi da inserire
« il: 21 Agosto 2014, 20:40:48 CEST »
0
Buona sera a tutti, vi scrivo perchè volevo sapere se si può fare una cosa del genere: io normalmente utilizzo le listview con degli array, per esempio ho un array di 10 valori, siano essi valori definiti che null. Molto spesso mi trovo nella situazione di avere una listview con dei buchi vuoti perchè nell'array alcuni valori sono null. è possibile quindi creare una listview con tanti posti quanti quelli definiti in un array, spero di essermi spiegato bene :)
Se ti sono stato d'aiuto premi il tasto THANKS :)

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:ListView senza sapere il numero di elementi da inserire
« Risposta #1 il: 21 Agosto 2014, 21:45:53 CEST »
0
semplicemente si possono inserire dei controlli, per esempio elimini gli elementi dell'array dove sono null
oppure copi l'array in un hashmap, dalla quale poi crei la lista, ma senza copiare gli elementi null o vuoti

Offline Nicola_D

  • Moderatore
  • 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:ListView senza sapere il numero di elementi da inserire
« Risposta #2 il: 21 Agosto 2014, 21:59:57 CEST »
+1
ma per array tu intendi quelli dichiarati con [] ?
usa l'interfaccia List<Object> dove Object è il tipo del tuo oggetto, e non hai bisogno di metterci valori null...
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 Damien

  • Utente junior
  • **
  • Post: 63
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lenovo ZUK Z1
  • Sistema operativo:
    Windows 10
Re:ListView senza sapere il numero di elementi da inserire
« Risposta #3 il: 22 Agosto 2014, 10:51:22 CEST »
0
semplicemente si possono inserire dei controlli, per esempio elimini gli elementi dell'array dove sono null
oppure copi l'array in un hashmap, dalla quale poi crei la lista, ma senza copiare gli elementi null o vuoti

Inserendo dei controlli si allunga di molto il codice, e potrei inciampare in qualche bug, è più confusionario, speravo ci fosse un altro metodo :), guardo piuttosto con più interesse la risposta di Nicola_D


ma per array tu intendi quelli dichiarati con [] ?
usa l'interfaccia List<Object> dove Object è il tipo del tuo oggetto, e non hai bisogno di metterci valori null...

Si per array intendo quelli dichiarati con [], ti faccio un esempio

int array[] = new array[10] {10,30,2,5,78};

e dopo implemento questo array in una listview, ovviamente mi crea dei buchi, perchè l'array non contiene 10 valori, ma solo 5.

mi potresti fare un esempio di List<Object> scusa ma sono abbastanza nuovo del mondo android :/
Se ti sono stato d'aiuto premi il tasto THANKS :)

Offline Nicola_D

  • Moderatore
  • 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:ListView senza sapere il numero di elementi da inserire
« Risposta #4 il: 22 Agosto 2014, 10:58:18 CEST »
+1
Beh ma questo non è android, è java puro...

List (Java Platform SE 7 )
Citazione
An ordered collection (also known as a sequence). The user of this interface has precise control over where in the list each element is inserted. The user can access elements by their integer index (position in the list), and search for elements in the list.

Codice (Java): [Seleziona]
List<Integer> array = new ArrayList<Integer>(); //puoi usare LinkedList<Integer>(); dipende da cosa vuoi fare con la lista, ogni implementazione ha i suoi pro e contro
array.add(10);
array.add(30);....
...
Integer ten = array.get(0);
...
array.remove(ten) //oppure array.remove(0) per togliere l'elemento '10' oppure il primo della lista. In seguito l'elemento in poszione 0 non è più null, ma è quello successivo (30)

ma queste sono basi java a dire il vero, dovresti già saperle prima di iniziare a sviluppare con android... :D




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 Damien

  • Utente junior
  • **
  • Post: 63
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lenovo ZUK Z1
  • Sistema operativo:
    Windows 10
Re:ListView senza sapere il numero di elementi da inserire
« Risposta #5 il: 22 Agosto 2014, 13:13:14 CEST »
0
Beh ma questo non è android, è java puro...

List (Java Platform SE 7 )
Codice (Java): [Seleziona]
List<Integer> array = new ArrayList<Integer>(); //puoi usare LinkedList<Integer>(); dipende da cosa vuoi fare con la lista, ogni implementazione ha i suoi pro e contro
array.add(10);
array.add(30);....
...
Integer ten = array.get(0);
...
array.remove(ten) //oppure array.remove(0) per togliere l'elemento '10' oppure il primo della lista. In seguito l'elemento in poszione 0 non è più null, ma è quello successivo (30)

ma queste sono basi java a dire il vero, dovresti già saperle prima di iniziare a sviluppare con android... :D

Waaaa grandeeee grazie mille, gli ho aggiunto qualcosina rispetto a quello che mi hai detto tu e funziona tutto, posto il codice così se serve a qualcuno sono stato utile pure io :)

Codice: [Seleziona]
String array[]=new String[10] {"ciao","come","va","la","vita"};
ListView listView = (ListView) findViewById(R.id.listView1);
byte arraySize =0;
while(arraySize<10){ // arraySize=quante stringhe contiene l'array
        if(array[arraySize]==null){
                break;
        }                       
        arraySize++;
}
               
List<String> arrayList = new ArrayList<String>();
byte i =0;
while(i<arraySize) {
        arrayList.add(array[i]);
        i++;
}
               
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arrayList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
               @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                       //codice listView
               }
});

gli ho aggiunto arraySize che è la variabile che corrisponde a quanti valori non nulli contiene l'array :)
Se ti sono stato d'aiuto premi il tasto THANKS :)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1186
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:ListView senza sapere il numero di elementi da inserire
« Risposta #6 il: 22 Agosto 2014, 14:21:13 CEST »
+1
Questo codice è osceno a mio dire. Non esiste che tu dichiari un array da 10 elementi e ne metti solo 5.
Veramente pessimo.

Fai cosi:

List<String> list = new ArrayList<String>();

list.add("ciao");
list.add("parola 4");
list.add("non lo so");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);

molto, ma molto meglio

Offline Nicola_D

  • Moderatore
  • 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:ListView senza sapere il numero di elementi da inserire
« Risposta #7 il: 22 Agosto 2014, 14:28:28 CEST »
+1
scusa Damien, ripeto, studia un po di basi prima.
Non ha alcun senso che usi un array se puoi usare una List!
Gli array usali solo se sai a priori quanti elementi ci devi mettere e se non hai da farci modifiche.
Inoltre, esiste anche il metodo
Arrays (Java Platform SE 7 )...)
se proprio devi trasformare il tuo array in lista, ma non ha senso usare [] cosi come li usi, usa direttamente List!
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 Damien

  • Utente junior
  • **
  • Post: 63
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lenovo ZUK Z1
  • Sistema operativo:
    Windows 10
Re:ListView senza sapere il numero di elementi da inserire
« Risposta #8 il: 22 Agosto 2014, 15:57:54 CEST »
0
Si ci ho ripensato dopo, avete ragione dovrei usare direttamente arraylist, grazie dei consigli ;)
Se ti sono stato d'aiuto premi il tasto THANKS :)