Проблема с получением данных из firebase - PullRequest
0 голосов
/ 20 февраля 2019

Это журнал ошибок, у меня проблема с получением данных из базы данных Firebase в реальном времени.java.lang.ClassCastException: java.lang.String не может быть приведен к java.util.Map

E/AndroidRuntime: FATAL EXCEPTION: main
Process: root.example.com.chatrack, PID: 31556
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
    at root.example.com.chatrack.ChatActivity.AmbilDataGroup(ChatActivity.java:156)
    at root.example.com.chatrack.ChatActivity.access$200(ChatActivity.java:48)
    at root.example.com.chatrack.ChatActivity$2.onDataChange(ChatActivity.java:140)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0.6:75)
    at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.6:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.6:55)
    at android.os.Handler.handleCallback(Handler.java:794)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:176)
    at android.app.ActivityThread.main(ActivityThread.java:6635)
    at java.lang.reflect.Method.invoke(Native Method)

Я не знаю, что пошло не так, этот код, который я использую для получения данных

DatabaseReference add = mFirebaseDatabase.getReference().child("CHATRACK").child("USER").child(Child);
        Log.d(TAG, "getFriendsInfo() returned: " + add);
        add.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d(TAG, "onDataChange() returned: " + dataSnapshot);
                Log.d(TAG, "onDataChange() returned: " + Child.size());
                AmbilDataGroup((Map<String, Object>) dataSnapshot.getValue());
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

private void AmbilDataGroup(Map<String, Object> dataSnapshot) {
final ArrayList<String> Nama = new ArrayList<>();
    for (Map.Entry<String, Object> entry : dataSnapshot.entrySet()) 
    {
        Map nama= (Map) entry.getValue();
        Nama.add((String) nama.get("Nama"));
    }
}

почему это произошло.в другой деятельности тот же код был в порядке и без проблем.я не понимаюпожалуйста, помогите

изменить

здесь моя структура базы данных введите описание изображения здесь

1 Ответ

0 голосов
/ 20 февраля 2019
String value = "{first_name = naresh,last_name = kumar,gender = male}";
value = value.substring(1, value.length()-1);           //remove curly brackets
String[] keyValuePairs = value.split(",");              //split the string to creat key-value pairs
Map<String,String> map = new HashMap<>();               

for(String pair : keyValuePairs)                        //iterate over the pairs
{
    String[] entry = pair.split("=");                   //split the pairs to get key and value 
    map.put(entry[0].trim(), entry[1].trim());          //add them to the hashmap and trim whitespaces
}

добавить этот код в

DatabaseReference add = mFirebaseDatabase.getReference().child("CHATRACK").child("USER").child(Child);
        Log.d(TAG, "getFriendsInfo() returned: " + add);
        add.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d(TAG, "onDataChange() returned: " + dataSnapshot);
                Log.d(TAG, "onDataChange() returned: " + Child.size());
                String value = dataSnapshot.getValue();
                value = value.substring(1, value.length()-1);           //remove curly brackets
String[] keyValuePairs = value.split(",");              //split the string to creat key-value pairs
Map<String,String> map = new HashMap<>();              

for(String pair : keyValuePairs)                        //iterate over the pairs
{
    String[] entry = pair.split("=");                   //split the pairs to get key and value 
    map.put(entry[0].trim(), entry[1].trim());          //add them to the hashmap and trim whitespaces
}
                AmbilDataGroup(map);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

private void AmbilDataGroup(Map<String, Object> dataSnapshot) {
    final ArrayList<String> NamaGroup = new ArrayList<>();
    for (Map.Entry<String, Object> entry : dataSnapshot.entrySet()) {
        Map namaGroup = (Map) entry.getValue();
        NamaGroup.add((String) namaGroup.get("GroupName"));
    }
    final ArrayList<String> GroupMember = new ArrayList<>();
    for (Map.Entry<String, Object> entry : dataSnapshot.entrySet()) {
        Map groupMember = (Map) entry.getValue();
        GroupMember.add((String) groupMember.get("GroupMember"));
    }
    final ArrayList<String> GroupId = new ArrayList<>();
    for (Map.Entry<String, Object> entry : dataSnapshot.entrySet()) {
        Map groupId = (Map) entry.getValue();
        GroupId.add((String) groupId.get("GroupId"));
    }

    String[] member = GroupMember.toString().split(",");
    String memberId;
    if (GroupId != null) {
        int i = 0;
        while (GroupId.size() > i) {
            memberId = GroupMember.get(i).replace("[", "").replace("]", "");
            Log.d(TAG, "AmbilDataGroup() returned: " + GroupMember.get(i).split(","));
            if (memberId.contains(UserId)) {
            }
            Log.d(TAG, "AmbilDataGroup() returned: int i" + i);
            i++;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...