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