Visualizzazione stampabile
-
Puntare a un XML su Web
Buongiorno a tutti!
Un semplice codice come questo:
fa riferimento al file layout/main.xml che si trova in locale.
E' possibile far puntare la funzione setContentView() a un file XML che si trovi in remoto, con un indirizzo del tipo http: //mysite.com/main.xml?
Grazie!
-
Quote:
Originariamente inviato da
marianotomatis
Buongiorno a tutti!
Un semplice codice come questo:
fa riferimento al file layout/main.xml che si trova in locale.
E' possibile far puntare la funzione setContentView() a un file XML che si trovi in remoto, con un indirizzo del tipo http: //mysite.com/main.xml?
Grazie!
Risposta: no.
-
Allora...direi di si...ma c'è una procedura più lunga e complessa che va dallo scaricamento del file, alla creazione di una nuova View allo "spacchettamento" del layout.
Scopo di utilizzo?
-
In effetti speravo si potesse aggirare in questo modo.
L'idea è quella di generare in streaming con PHP dei file XML da far usare all'applicativo in modo dinamico; si tratta di reportistica varia, che pesca da un database MySQL su web.
L'alternativa sarebbe quella di generare (sempre con il PHP) direttamente codice HTML e caricare delle WebView, ma lavorare con gli oggetti "nativi" di un layout XML mi sembra più pulito.
Qualcuno ha esperienza in merito? Pro e contro dei due approcci?
Nel caso scelga di sfruttare l'XML, sono costretto a farne il parsing o esistono strutture più efficaci attraverso cui passarlo a una setContentView()?
-
Prova a dare un'occhiata alla classe LayoutInflater, serve a ricostruire una view da un file xml presente in /res/layout, che però gli passi tramite il riferimento R.layout.nome_della_view, se non c'è niente neanche lì ti tocca davvero fare tutto a "mano", ovvero parsare l'xml e costruire le varie view.
Di sicuro il codice per scaricare e leggere l'xml dal sito remoto lo devi scrivere per forza.
-
Quote:
Originariamente inviato da
marianotomatis
Nel caso scelga di sfruttare l'XML, sono costretto a farne il parsing o esistono strutture più efficaci attraverso cui passarlo a una setContentView()?
Tecnicamente setContentView accetta anche una View, una View può essere costruita da un oggetto AttributeSet e un AttributeSet può essere creato da un XML con questo codice
Se guardi il javadoc relativo soprattutto a AttributeSet dovresti riuscire a vedere come fare.
Perdonami, però, ma a mio parere stai chiedendo all'infrastruttura Android di fare qualcosa per cui non è preposta. Visto che mi sembra che tu stia semplicemente cercando di visualizzare dei dati credo che la cosa migliore sarebbe far arrivare dal web (un server, immagino) i dati in formato XML (o pincopallino a piacere, ovviamente), ma comunque solo i dati e poi costruire una classe che li parsa e monta la view secondo la visualizzazione che preferisci.
Questo rende il server un po' meno android-dependent e permette di gestire in modo più pulito la visualizzazione sul client, anche con un mucchio più di libertà e altri vantaggi.
La webview invece direi che è da escludere, la webview è quasi sempre una scorciatoia dirty, a mio modo di vedere, a meno che tu non stia scrivendo un browser.
-
Penso che non si possa fare semplicemente perchè quando viene pacchettizzata l' applicazione android il contenuto è già stato memorizzato non si può aggiungere un layout.
Secondo me basta poco per rendere tutto dinamico alla fine ogni layout è composta da oggetti View devi solo ciclare l' xml e creare in runtime