Codice per rinominare la "radice" del database:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference(); databaseReference.setValue("Ciao, ciccio"); }Bene.
Ora provo, come da esempio a mettere una classe su un database.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Persona persona=new Persona("Mario","Rossi"); DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference(); databaseReference.setValue(persona); } class Persona{ public String nome; public String cognome; public Persona(String nome, String cognome){ this.nome=nome; this.cognome=cognome; } }Ho usato il metodo setValue del DatabaseReference.
Ma leggo che si può usare anche il metodo push.
Vediamolo...
Ecco sì: questo è perfetto:
public class MainActivity extends AppCompatActivity { Persona persona; DatabaseReference nuovo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference(); persona=new Persona("Mario","Rossi"); nuovo=databaseReference.push(); nuovo.setValue(persona); persona=new Persona("Giuseppe","Verdi"); nuovo=databaseReference.push(); nuovo.setValue(persona); persona=new Persona("Antonello", "Il Pazzo"); nuovo=databaseReference.push(); nuovo.setValue(persona); } class Persona{ public String nome; public String cognome; public Persona(String nome, String cognome){ this.nome=nome; this.cognome=cognome; } } }
Ora mi creo un semplice database SQLite e tramite una classe intermedia lo salvo in remoto.
Prima mi compilo il database SQLite sul cellulare.
public class MainActivity extends AppCompatActivity { Persona persona; DatabaseReference nuovo; Helper helper; Button button; Button buttonSave; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper=new Helper(this); //DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); button=(Button)findViewById(R.id.button2); buttonSave=(Button)findViewById(R.id.button3); buttonSave.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { persona=new Persona("Mario","Rossi",45,"Scassinatore"); helper.save(persona); persona=new Persona("Carlo","Bianchi",54,"Ladro"); helper.save(persona); persona=new Persona("Luigi","Verdi",36, "Falsario"); helper.save(persona); } }); button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Cursor c=helper.query(); do{ System.out.println(c.getString(0)+" "+c.getString(1)+" "+c.getInt(2)+" "+c.getString(3)); } while(c.moveToNext()); } }); } } class Persona{ public String nome; public String cognome; public int eta; public String professione; public Persona(String nome, String cognome, int eta, String professione){ this.nome=nome; this.cognome=cognome; this.eta=eta; this.professione=professione; } } class Helper extends SQLiteOpenHelper{ Context context; public Helper(Context context) { super(context, "mioDatabase.db", null, 1); this.context=context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE TABELLA(NOME TEXT, COGNOME TEXT, ETA INTEGER, PROFESSIONE TEXT)"); } public void save(Persona p){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("NOME",p.nome); values.put("COGNOME",p.cognome); values.put("ETA",p.eta); values.put("PROFESSIONE",p.professione); db.insert("TABELLA",null,values); } public Cursor query(){ SQLiteDatabase db=this.getWritableDatabase(); Cursor crs=db.rawQuery("SELECT* FROM TABELLA",null); crs.moveToFirst(); return crs; } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }(qui ho commentizzato il codice relativo a Firebase perché adesso devo solo creare un database, il codice cambierà in seguito).
Perfetto: il database è stato creato e compilato correttamente, ne ho la conferma:
10-21 11:40:44.305 4257-4257/? I/System.out: Mario Rossi 45 Scassinatore 10-21 11:40:44.305 4257-4257/? I/System.out: Carlo Bianchi 54 Ladro 10-21 11:40:44.305 4257-4257/? I/System.out: Luigi Verdi 36 FalsarioOra viene la parte "tosta"!
Devo prendere un Cursor dal mio database.
Per ogni RECORD devo fare un push e quindi un setValue, ossia aggiungere un NODO al database.
Quindi scorrere il Cursor, porre i valori in un'istanza della classe Persona e quindi fare push e settare Value all'istanza di Persona.
Traduciamo in codice l'idea...
button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Cursor c=helper.query(); do{ persona=new Persona(c.getString(0),c.getString(1),c.getInt(2),c.getString(3)); } while(c.moveToNext()); } });Ho creato un'istanza di Persona mettendo i valori dei campi come parametri del costruttore della classe.
Ora...
button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Cursor c=helper.query(); do{ persona=new Persona(c.getString(0),c.getString(1),c.getInt(2),c.getString(3)); DatabaseReference nodo=databaseReference.push(); nodo.setValue(persona); } while(c.moveToNext()); } });...questo dovrebbe funzionare. Vediamo...
ALLA GRANDE!!!
proprio quello che cercavo............complimenti!!
RispondiElimina