How to get an array list object from Firebase

I added an ArrayList to Firebase, but I don't know how to return it.

mDatabase.child("list").child("person").setValue(myValues);
//This is how I added it to my firebase

I have tried this. This is my error message.

com.google.firebase.database.DatabaseException: Cannot convert an object of type java.util.ArrayList to enter an element

ValueEventListener postListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                for (DataSnapshot data : snapshot.getChildren()) {
                    GenericTypeIndicator<HashMap<String, Item>> t = new GenericTypeIndicator<HashMap<String, Item>>() {};

                    HashMap<String, Item> beans = data.getValue(t);

                    Set set = beans.entrySet();
                    Iterator i = set.iterator();

                    // Display elements
                    while (i.hasNext()) {
                        Map.Entry me = (Map.Entry) i.next();
                        Toast.makeText(getContext(), me.getKey() + ": ", Toast.LENGTH_LONG).show();
                        Toast.makeText(getContext(), me.getValue().toString(), Toast.LENGTH_LONG).show();
                        System.out.println(me.getValue());
                    }
                }

            }
            @Override
            public void onCancelled(DatabaseError firebaseError) {
                Log.e("The read failed: " ,firebaseError.getMessage());
            }
        };
        mDatabase.addValueEventListener(postListener);
+4
source share
2 answers

Sorry, if you worked on this, I needed to change the directory.

ValueEventListener postListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                GenericTypeIndicator<ArrayList<Item>> t = new GenericTypeIndicator<ArrayList<Item>>() {};
                ArrayList<Item> yourStringArray = snapshot.getValue(t);
                Toast.makeText(getContext(),yourStringArray.get(0).getName(),Toast.LENGTH_LONG).show();
            }
            @Override
            public void onCancelled(DatabaseError firebaseError) {
                Log.e("The read failed: " ,firebaseError.getMessage());
            }
        };
        mDatabase.child("list/user1").addValueEventListener(postListener);
+11
source

With the help of this, I got a list of messages that I store in this object.

    private void lerMessagensFirebase() {
    mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
    final ChatFirebaseAdapter firebaseAdapter = new ChatFirebaseAdapter(mFirebaseDatabaseReference.child("chatmodel"), userModel.getName(), this);
    firebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            super.onItemRangeInserted(positionStart, itemCount);
            int friendlyMessageCount = firebaseAdapter.getItemCount();
            int lastVisiblePosition = mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
            if (lastVisiblePosition == -1 ||
                    (positionStart >= (friendlyMessageCount - 1) &&
                            lastVisiblePosition == (positionStart - 1))) {
                rvListMessage.scrollToPosition(positionStart);
            }
        }
    });
    rvListMessage.setLayoutManager(mLinearLayoutManager);
    rvListMessage.setAdapter(firebaseAdapter);
}
0
source

Source: https://habr.com/ru/post/1658873/


All Articles