Visualizzazione stampabile
-
Premettendo che ho capito quello che intendete quando dite di utilizzare layout standard e di andare avanti ed infatti è quello che stò facendo (anche se non mi piace perchè secondo me un programmatore non deve utilizzare layout standard perchè è un pò come dire a qualcuno di fare un sito internet e questo prende un sito con grafica già fatta e lo utilizza).
Però, tralasciando ora l'argomento layout, ho voluto postare il codice di cui sopra per far capire che con android anche le cose più banali hanno bisogno di linee e linee di codice. Faccio un altro esempio : ExpandibleListAdaper possibile che per ottenerlo con android sia necessario uno codice di questo tipo ?
ragazzi ma ci rendiamo conto che questa cosa con il C++, il PHP e quant'altro si fa con un array, una tabella ed un ciclo for ? :O
Evito di parlare di Spinner ed ImageSpinnerAdapter perchè ti fanno venire i capelli dritti ! :D
@TheCopacabanaMan : c'è un intero capitolo dedicato all'SQLite però spiega solo come creare un db, come scrivere e leggere dentro ma non come effettuare l'operazione che vuoi tu. Mi spiace, fose dovrai utilizzare tipo 1000 linee di codice per farlo :D :p
-
Quote:
Originariamente inviato da
mimmog
@TheCopacabanaMan : c'è un intero capitolo dedicato all'SQLite però spiega solo come creare un db, come scrivere e leggere dentro ma non come effettuare l'operazione che vuoi tu. Mi spiace, fose dovrai utilizzare tipo 1000 linee di codice per farlo :D :p
Bah, ce l'ho fatta con 14 linee di codice. Avevo gia' avuto l'impressione che quel libro fosse un "entry level"...
P.S. grazie, ti devo una birra :)
-
Cose come questa:
mi fanno venire i brividi.
-
Quote:
Originariamente inviato da
mimmog
ragazzi ma ci rendiamo conto che questa cosa con il C++, il PHP e quant'altro si fa con un array, una tabella ed un ciclo for ? :O
Ehm... no. ;)
Quando parli di un oggetto JAVA che è derivazione di altri oggetti JAVA non devi solo considerare quello che è l'uso che devi farne, ma al fatto che l'oggetto che andrai a gestire potrà essere utilizzato in qualsiasi contesto questo è atteso.
Un Adapter, per esempio, è effettivamente un elenco di elementi però considera che questi elementi possono essere generici (stringhe, classi, immagini o quant'altro) e che in lui porta abbastanza informazione da potersi costruire, da solo un'interfaccia, se invocato nel modo opportuno.
Ovviamente tutto questo carico di capacità ha un prezzo che in JAVA (in JAVA, ripeto, non in android) è dato da costruzioni un po' più barocche che altrove.
Se tu avessi solo un array poi dovresti implementare il modo in cui leggere l'array, magari un modo per maneggiarei dati al suo interno e infine un'interfaccia per visualizzarli. Molte di queste cose potrebbero non essere riutilizzabili... Una volta che hai implementato l'adapter in questo modo invece sai di poterlo usare in ogni contesto necessiti di un adapter. In una prospettiva di progetti grandi (ok, più grandi di app android, ma JAVA ha un uso parechcio esteso) questo è vitale.
-
Condivido quanto dici, anzi non vorrei si pensasse che ho qualcosa contro java che invece reputo un linguaggio che sicuramente vale la pena conoscere,dico solo che per android qualcosina e' un po troppo ostica e potrebbe essere migliorata e semplificata. Eclipse come interfaccia grafica per la gestione dei layout va tanto migliorata, la dovrebbero far diventare stile dreamweaver per essere buona, per il resto continuo a studiare e copiate il codice cosi come consigliato da tanti sperando che in un prossimo futuro le cose mi sembrino più chiare :)
-
Ciao a tutti,
Finalmente un bel post tecnico di buon codice :-) A parte gli scherzi è ovvio che, non solo in Android, è sempre meglio utilizzare le api esistenti piuttosto che realizzare qualcosa di custom. La creazione di componenti custom deve essere presa solamente come l'ultima opzione. Proprio di recente ho dovuto fare un refactoring di una applicazione esistente, piena di "reinvent the wheel" spostando a livello di risorse gran parte del codice scritto in Java. Eh si, le odiate risorse che hanno portato via molte pagine del mio libro :-) L'esempio del FlowLayout è un esempio puramente didattico di come si possa creare un layout custom ma, come giustamente diceva uno di voi, si tratta di un qualcosa di abbastanza raro: quasi tutto si riesce a fare con i layout predefiniti. L'esempio successivo in realtà non ha nulla di complesso se non alcuni metodi per la creazione di una struttura dati che permetta l'utilizzo dell'ExpandableListAdapter. In questo esempio c'è poi un utilizzo "simpatico" delle Generics. A tale proposito vi consiglio, se non lo avete giá fatto, di leggervi il libro "Effective Java" di Josh Bloch il quale è un MUST per chiunque sviluppi in Java (Android o no).
Per colui che chiedeva come caricare un db già costruito gli dico che la cosa è semplice dato che è possibile mettere il relativo file come risorsa raw e, alla prima esecuzione dell'applicazione, ricopiarlo nella cartella relativa al db della stessa che è /data/data/<package app>/databases/. È comunque possibile accedere a questa directory direttamente dall'Activity attraverso un apposito metodo di Context che dovrebbe essere getDatabasePath() se ricordo bene. Se non chiaro è possibile scrivermi una mail per avere il codice già fatto per questa cosa. Si tratta si e no di 5 righe di codice per chi è abituato a contarle ;-)
Più in generale, penso che nessuno abbia mai detto che sviluppare per Android sia o debba essere facile. Sicuramente dipende da cosa si deve realizzare anche se possiamo dire che, a paritá di applicazione, Android è più complesso di iPhone. Poi, a parità di linguaggio, molto dipende da chi sviluppa e dalla sua volontà di creare qualcosa di riutilizzabile. Questo sta alla base di sintassi all'apparenza complesse del tipo List<? extends Map<String,String> che sta,in due parole, ad indicare un riferimento ad una lista di oggetti di cui non conosco il tipo esatto ma che sicuramente sono oggetti istanza di una classe che implementa l'interfaccia Map che associa ad una String un'altra String. Il fatto che non conosca il tipo esatto degli elementi nella lista non mi permetterà di aggiungere elementi alla stessa ma mi permetterà di sapere che qualunque cosa estrarrò sarà sicuramente un qualcosa che potrò assegnare ad un riferimento di tipo Map<String,String>.
Non ho molto tempo di seguire i vari forum ma se mi scrivete una mail per chiedere delucidazioni sul libro vi risponderò senza problemi come ho fatto in diversi casi di altri lettori.
Massimo
-
Gentile Dott Carli, la ringrazio per le sue delucidazioni. Ora il suo libro e' già nelle librerie e non so nemmeno se ha intenzione di fare delle ristampe, nel caso ci fosse questa intenzione direi che sarebbe opportuno a questo punto prendere in considerazione l' ipotesi di dedicare ai custom magari la parte finale del libro perché se la inserisce come ha fatto nel capitolo 4, un neofita come me e tanti altri che si avvicinano per la prima volta al mondo android, presumono che il custom sia una cosa indispensabile per creare un interfaccia di layout d decente in un proprio programma android o quantomeno le propongo di scrivere che le api esistenti sono sufficienti ma ci si potrebbe imbattere nell' esigenza remota di un custom. Questo lo dico perché personalmente ho studiato e capito i primi 4 capitoli in maniera straordinariamente veloce ma poi mi sono arenato fino ad oggi su un codice che solo ora scopro essere non indispensabile, il dubbio mi era venuto ed infatti ero andato avanti sugli adapter, ma poi quando anche li ho visto che vi erano riferimenti a quelli custom,ho pensato che forse mi sbagliavo e' nata di li la mia esigenza di creare questo topic intitolato Programmi di esempio proprio per capire se queste customuzzazioni fossero la norma oppure no. Ora so di poter andare avanti e di rispolverare questi custom quando avrò una maturità di programmazione in questo ambiente tale da sentirmi pronto a farlo. Spero che prenda seriamente in considerazione questa mia richiesta e la ringrazio sempre per la sua disponibilità nell' intervenire in queste discussioni che a volte cominciano con un qualcosa di poco serio ma poi si trasformano in un aiuto per tanti di noi. Grazie
-
concordo con mimmog. Effettivamente, mi era sembrato strano trovare questo codice gia al capitolo 4, ma non volevo infierire. :)
Comunque, le edizioni successive dei libri sono sempre piu corrette.
Mimmog, in bocca al lupo!
-
Beh, vi ringrazio dell'osservazione di cui terrò conto nel prossimo libro che uscirá a febbraio e che non sarà una seconda edizione del precedente ma avrá contenuti diversi. Ne terrò conto per quello che sarà nelle mie possibilità visto che sono aspetti che non sempre decide chi scrive.
Ne approfitto anche per precisare che, come avvenuto nel testo precedente, darò per scontato i concetti legati alla programmazione Java per cui non mancheranno sintassi del tipo List<? extends E> le quali possono non essere forse banali ma che mi permetteranno di creare un piccolo framework per la gestione di problematiche comuni nello sviluppo Android. Sicuramente non permetterà di fare tutto (se avessi dovuto affrontare in modo approfondito tutto Android il primo testo sarebbe stato di 3000 pagine...) ma sicuramente potrà essere preso come spunto.
Lasciatemi comunque dire che il fatto di partire a "testa bassa" nel realizzare un Layout custom mi sa tanto di CPP (copy and past programming). Se fosse stata una regola quella di dover sempre realizzare un layout custom, quelli esistenti a cosa sarebbero serviti? La cosa bella è che il paragrafo "Realizzare Layout Custom" inizia proprio così: "Nella maggior parte dei casi, i layout descritti in precedenza, sono più che sufficienti alla realizzazione delle interfacce più comuni. Nel caso in cui vi fosse la necessità di creare algoritmi personalizzati con cui disporre le View......". Ovviamente per leggere questa parte bisogna avere il libro ;)
Buon lavoro
-
Bhe che dire? Attendiamo con ansia febbraio ed il suo nuovo libro :) Per il layout custom e' vero che all' inizio del capitolo 4 dice che i layout standard sono sufficienti ma e' anche vero che non si capisce quello che si e' detto qui e cioè che utilizzare un layout custum e' una cosa rara che forse un programmatore android potrebbe non trovarsi mai a fare, non ho capito però il suo discorso sul partire a ''testa a bassa'' nel realizzare un layout custom le sa di CPP che intende?