leithdm
5/14/2020 - 10:00 AM

Firebase: Reading 101

//Example 1:
//Reading a database with following structure:
//Database Root > {"name" : "name of user"}
private DatabaseReference _mDatabase;
    
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        _mDatabase = FirebaseDatabase.getInstance().getReference();
       
        DatabaseReference nameRef = _mDatabase.child("name");
        nameRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                Log.i("value is", value);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {}
        });
        
//Example 2:
//Reading a database with following structure:
//Database Root > {"name" : "foo" } ,
//                {"profession" : "bar"}
        
        _mDatabase = FirebaseDatabase.getInstance().getReference();
        
        _mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                Map<String, String> value = (Map) dataSnapshot.getValue();
                //can also use Map<String, String> value = (Map<String, String>) dataSnapshot.getValue();

                String name = value.get("name");
                String profession = value.get("profession");

                Log.i("E_VALUE", name);
                Log.i("E_VALUE", profession);
            }
            
//Example 3:
//Reading a database with following structure and putting into a ListView
//Database Root > users > 
//              {"user_one" : "name of user"}
//              {"user_two" : "name of user"}  

    private DatabaseReference _mDatabase;
    private ListView _listView;
    private ArrayList<String> _userNames;
    private ArrayAdapter _arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        _mDatabase = FirebaseDatabase.getInstance().getReference();
        _listView = findViewById(R.id.listView);
        _userNames = new ArrayList<>();
        _arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,_userNames);
        _listView.setAdapter(_arrayAdapter);
        
        DatabaseReference usersRef = _mDatabase.child("users");
        usersRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                String value = dataSnapshot.getValue(String.class);
                _userNames.add(value);
                _arrayAdapter.notifyDataSetChanged();
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) { }
            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) { }
            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) { }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) { }
        });
    }