Visualizzazione stampabile
-
1 allegato(i)
Adapter
Guardavo gli esempi di google e quelli del libro di Carli precisamente quello relativo agli ArrayAdapter su ListView. Posto di seguito di seguito il codice :
File main.xml
file row.xml
file array.xml
file java
In allegato metto l'immagine di quello che questo codice genera.
DOMANDA :
Se volessi far assegnare ad ogni pulsante invece che la scritta standard "Pulsante" anche a questi la scritta Value1,Value2, etc come dovrebbe essere il codice ?? :-[
-
La scritta "Pulsante" viene assegnata di default nel file array.xml:
codice:
<Button android:id="@+id/Button01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Pulsante">
</Button>
Mentre i valori (Value1, Value2, ...) vemgono assegnati nel file java, quando associ l'array al ArrayAdapter:
codice:
adapter = new ArrayAdapter(this,R.layout.row,R.id.rowText,dati_array);
Non trovo soluzioni semplici...
L'unica soluzione che mi viene in mente, sarebbe intercettare il momento in cui viene fatta l'associazione, e assegnare al pulsante lo stesso valore della TextView
... ma fa schifo.
-
Ammazza non pensavo che io stessi chiedendo una cosa così complicata! o_O
-
1 allegato(i)
Ciao, Mimmog.
Ho trovato un modo per risolvere il tuo quesito, e ho creato il progettino Eclipse che ti allego.
Non e' cosi' semplice, perche' fa uso di ArrayList & HashMap. BTW, non e' tutta farina del mio sacco: ho trovato le info su internet :)
Ho cercato di ridurre al minimo le linee di codice, ma se e' troppo ristretto, cerchero' di essere piu' prolisso :)
Se incontri difficolta' nella comprensione, chiedi pure :)
-
Quote:
Originariamente inviato da
TheCopacabanaMan
Ciao, Mimmog.
Ho trovato un modo per risolvere il tuo quesito, e ho creato il progettino Eclipse che ti allego.
Non e' cosi' semplice, perche' fa uso di ArrayList & HashMap. BTW, non e' tutta farina del mio sacco: ho trovato le info su internet :)
Ho cercato di ridurre al minimo le linee di codice, ma se e' troppo ristretto, cerchero' di essere piu' prolisso :)
Se incontri difficolta' nella comprensione, chiedi pure :)
Mi sembra una soluzione molto elegante, anche se ammetto che il SimpleAdapter sembra un oggetto piuttosto contorto o_O
C'è qualcosa che non capisco... come fa il codice a sapere di dover sostituire le stringe proprio in quei text?
Non mi sembra di vedere riferimenti nel layout alle tag che usi nel codice.
Credevo che la cosa fosse legata alla frase
Quote:
The layout file should include at least those named views defined in "to"
Ma non l'ho capita :p
-
Quote:
Originariamente inviato da
Cymon
come fa il codice a sapere di dover sostituire le stringe proprio in quei text?
Non mi sembra di vedere riferimenti nel layout alle tag che usi nel codice.
Qui dichiaro quali sono le colonne del data map:
codice:
data_map.put("text_del_button", dati_array[i].toString());
data_map.put("text_del_textview", dati_array[i].toString());
cioe' "text_del_button" & "text_del_textview".
Qui associo le colonne dichiarate sopra agli ID di ogni elemento della riga (R.layout.row):
codice:
data_adapter = new SimpleAdapter(this, data_list, R.layout.row, new String[] {"text_del_button", "text_del_textview"}, new int[] {R.id.Row_Button, R.id.Row_Text});
La riga di sopra avrebbe potuto essere scritta cosi':
codice:
String[] nomi_delle_colonne = new String[] {"text_del_button", "text_del_textview"};
int[] id_degli_elementi_di_ogni_riga = new int[] {R.id.Row_Button, R.id.Row_Text};
data_adapter = new SimpleAdapter(this, data_list, R.layout.row, nomi_delle_colonne, id_degli_elementi_di_ogni_riga );
e si sarebbe visto chiaramente che "text_del_button" & "text_del_textview" corrispondevano agli elementi R.id.Row_Button & R.id.Row_Text
... spero di essere stato abbastanza confuso! :)
-
Quote:
Originariamente inviato da
TheCopacabanaMan
... spero di essere stato abbastanza confuso! :)
Abbastanza grazie o_O
Quello che mi chiedevo è se quindi in automatico il metodo vada in automatico a cercare nella configurazione un campo "text" e appiccichi la stringa lì...
Probabilmente però è proprio così... :p
-
Quote:
Originariamente inviato da
TheCopacabanaMan
Ciao, Mimmog.
Ho trovato un modo per risolvere il tuo quesito, e ho creato il progettino Eclipse che ti allego.
Non e' cosi' semplice, perche' fa uso di ArrayList & HashMap. BTW, non e' tutta farina del mio sacco: ho trovato le info su internet :)
Ho cercato di ridurre al minimo le linee di codice, ma se e' troppo ristretto, cerchero' di essere piu' prolisso :)
Se incontri difficolta' nella comprensione, chiedi pure :)
Allora, prima di tutto ti ringrazio per l'impegno :)
Ancora una volta android mi sorprende per il fatto che un operazione così semplice con altri linguaggi qui deve essere fatta con il SimpleAdapter + HasMap..... in php si sarebbe risolto con un cliclo for ed un echo ;)
Comunque, tornando a noi, avevo notato anche io ieri sul libro di Carli un esempio simile al tuo relativo al SimpleAdapter però non mi volevo convincere che una cosa così banale richiedesse il SimpleAdapter. Voglio dire, alla fine avevo un listview che mi scriveva i valori del mio array e volevo solo dirgli di cambiare anche l'etichetta ad ogni button niente di così eclatante.....pensavo bastasse solo una righetta del tipo pulsante.setText o roba del genere quindi ho preferito chiedere.....ed in effetti ora mi rendo conto che "In Android niente è quel che sembra" :)
Grazie per l'aiuto! ;)
-
Quote:
Originariamente inviato da
mimmog
Allora, prima di tutto ti ringrazio per l'impegno :)
Ancora una volta android mi sorprende per il fatto che un operazione così semplice con altri linguaggi qui deve essere fatta con il SimpleAdapter + HasMap..... in php si sarebbe risolto con un cliclo for ed un echo ;)
Mmmh, non so... ;)
Comunque io avrei usato un approccio diverso. Certo, il simpleadapter serve esattamente a quello, ma è un po' troppo contorto. Personalmente mi sarei creato una classe figlia di adapter e mi sarei creato i metodi per fabbricare i bottoni a piacere...
In questo senso l'unica cosa che non mi piace di android è non avere modo di usare un xml di layout per un oggetto view piuttosto che per un activity... In questi casi sarebbe utile, soprattutto per pulizia di codice. Quando ho dovuto fare qualcosa di simile alla fine ho dovuto costruire tutto il blocco istanziando pezzetto per pezzetto nl java...
-
Quote:
Originariamente inviato da
mimmog
una cosa così banale richiedesse il SimpleAdapter.
Io avrei costruito una Table, e l'avrei riempita dinamicamente :)
Quote:
Originariamente inviato da
Cymon
Comunque io avrei usato un approccio diverso.
Cymon, prova a scrivere un progettino di esempio, e vediamo cos'avresti fatto :)