Visualizzazione stampabile
-
Layout dinamics
Ciao,
sono nuovo del forum, ringrazio in anticipo chi mi aiuterà.
Spero di essere utile anch'io al forum da oggi.
Sto lavorando per l'azienda per cui lavoro ad un app e ho ancora diversi dubbi architetturalmente.
La mia app si sincronizzerà in alcuni momenti della giornata con un Db Server per raggiungere alcune tabelle, tra cui la primaria che contiene delle anagrafiche.
Mi serve un'activity che legga queste anagrafiche. Il problema che il mio layout non può essere fisso in quanto potrebbero aggiungere/eliminare dei campi della tabella stessa.
La mia idea era creare un file xml esterno e caricarlo nella cartella layout in qualche modo... è possibile?
Temo la risposta, ma in tal caso.. come?
In alternativa ho pensato sempre di generare un file esterno con textView e EditText e leggerlo da una classe.
Secondo voi è possibile?Se si come?
Non mi vengono altre idee in mente, forse anche perché non sono ancora così pratico come vorrei.
Grazie per l'attenzione.
-
Ciao, Genty.
Mi sono imbattuto anch'io in un problema simile, e ho risolto in questo modo:
- ho creato una TableView vuota
- da codice, aggiungo le righe alla TableView in maniera dinamica
...ovviamente, il numero di righe è variabile, quindi è possibile che la TableView "esca" dall'area visibile. Puoi mettere una ScrollView che contiene la TableView, in modo da avere un'area scrollabile, che contiene tutte le tue righe
P.S.
Quote:
Originariamente inviato da
genty
Sto lavorando per l'azienda per cui lavoro
:D :D :D
-
Ciao!
Innanzi tutto grazie per la risposta.
Si mi sembra una valida soluzione alternativa.
Quindi anche tu hai escluso nella tua app le mie proposte perché non possibili o perché anche tu non sapevi se fosse possibile?
-
In realtà la soluzione di generare dinamicamente i controlli, mi è sembrata più comoda.
Avevo già esperienza di costruzione dinamica di layout, così ho seguito la strasda "facile" :)
Come sei messo con l'XML?
Quale piattaforma utilizzeresti, come WebServer per lo scambio dei dati?
-
Come piattaforma utilizzerei DoNet per lo scambio dei dati.
A me interessava l'altra strada perché ho diverse librerie già pronte che mi avrebbero semplificato la vita nella lettura del db.
Ma alla fine se una volta compilata l'app questa viene compressa in un unico file mi sa che quel che propongo io non è proprio fattibile.
Che ne pensi tu? Un content provider potrebbe aiutarci?
-
Se hai delle librerie che ti semplificano il lavoro, prova ad utilizzarle...
Io non ho sottomano il tuo codice, devi essere tu a scegliere la strada migliore.
-
Ti ringrazio per i consigli dati.
Infatti io preferirei prendere la strada proposta a inizio discussione, ma non abbiamo capito alla fine se sia possibile o meno purtroppo.
Il mio problema è come leggere i dati.
Cioè.. se mi faccio generare da fuori un file già con una TableView compilata, come posso leggere il file da una classe? è possibile farlo?
-
Quote:
Originariamente inviato da
genty
se mi faccio generare da fuori un file già con una TableView compilata, come posso leggere il file da una classe? è possibile farlo?
Anche se riuscissi a leggere un file (che contiene una TableView), questo rimarrebbe un file di... di testo, suppongo?
Dovresti poi associare il testo ad un controllo TableView. Non sono sicuro che sia possibile farlo.
-
ok ho deciso che prendo la strada che mi hai consigliato tu!
Hai un esempio di riga di codice per capire come tu aggiungi le righe alla TableView?
Grazie
-
Prova un po....
codice:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ricerca);
Tbl_Data = (TableLayout)findViewById(R.id.Tbl_Data);
Fill_Table();
}
//***********************************************
private void Fill_Table() {
// cancelliamo eventuali righe precedenti
Tbl_Data.removeAllViews();
// variabili che mi servono tra poco
String id = "";
String voce_trovata = "";
// otteniamo tutte le ragioni sociali che soddisfano
// la ricerca
SqlStmt = " select distinct id, Ragione_Sociale ";
SqlStmt += " from dati_clienti ";
SqlStmt += " order by Ragione_Sociale ";
try {
Cursor cursor = crm_database.getWritableDatabase().rawQuery(SqlStmt, null);
while (cursor.moveToNext() ) {
id = cursor.getString(0).toString().trim();
voce_trovata = cursor.getString(1).toString().trim();
Fill_Table_Add_Row(id, voce_trovata);
}
}
catch(Exception ex) {
messaggio = ex.getMessage();
Txt_Message.setText(messaggio);
}
}
//***********************************************
private void Fill_Table_Add_Row(String id, String voce) {
// prepariamo il testo
TextView the_name = new TextView(this);
the_name.setText(voce);
the_name.setTextSize(18);
the_name.setTextColor(Color.DKGRAY);
the_name.setId( Integer.parseInt(id) );
// riga per contenere i componenti
TableRow riga = new TableRow(this);
riga.setBackgroundColor(Color.parseColor("#F0F0F0"));
riga.addView(the_name);
// aggiungiamo questa riga alla table
Tbl_Data.addView(riga);
}
... ovviamente il codice non è completo. Mancano il file delle risorse, l'accesso al database, etc.