Исключение базы данных адаптера Firebase Recycler - PullRequest
1 голос
/ 22 июня 2019

Итак, я пытался извлечь данные из моей базы данных Firebase в адаптер утилизатора. Я поймал ошибку

Я не знаю, где я сделал ошибку.


public class addTeamMembers extends AppCompatActivity {

    private Toolbar mToolbar;
    private FirebaseAuth mAuth;
    private FirebaseUser currentUser;
    private String currentUserID, currentCompanyID, currentCompanyName, key;
    private DatabaseReference parentRef, employeeRef;
    private RecyclerView FindTeamReyclerList;



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

        mAuth = FirebaseAuth.getInstance();
        currentUser = mAuth.getCurrentUser();
        parentRef = FirebaseDatabase.getInstance().getReference();

        initializeFields();



    }

    @Override
    protected void onStart() {
        super.onStart();

        currentUserID = currentUser.getUid();

        parentRef.child("Users").child(currentUserID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if ((dataSnapshot.child("company").exists())) {
                    currentCompanyID = dataSnapshot.child("company").getValue().toString();


                    parentRef.child("Company References").child(currentCompanyID).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            if ((dataSnapshot.child("Company Name").exists()) && (dataSnapshot.child("Key").exists())) {
                                currentCompanyName = dataSnapshot.child("Company Name").getValue().toString();
                                key = dataSnapshot.child("Key").getValue().toString();

                                recyclerView();
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });


    }

    private void recyclerView() {
        String currentUserKey = currentUser.getUid();

        employeeRef = parentRef.child("Company Database").child(key).child(currentCompanyName).child("Employees").child(currentUserKey);

        FirebaseRecyclerOptions<Contacts> options = new FirebaseRecyclerOptions.Builder<Contacts>()
                .setQuery(employeeRef, Contacts.class)
                .build();

        FirebaseRecyclerAdapter<Contacts, FindTeamViewHolder> adapter = new FirebaseRecyclerAdapter<Contacts, FindTeamViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull FindTeamViewHolder holder, int position, @NonNull Contacts model) {
                holder.userName.setText(model.getName());
                holder.userPost.setText(model.getPost());
                Picasso.get().load(model.getImage()).into(holder.profileImage);
            }

            @NonNull
            @Override
            public FindTeamViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
                View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.users_display_layout, viewGroup, false);
                FindTeamViewHolder viewHolder = new FindTeamViewHolder(view);
                return viewHolder;
            }
        };

        FindTeamReyclerList.setAdapter(adapter);
        adapter.startListening();
    }

    public static class FindTeamViewHolder extends RecyclerView.ViewHolder {

        ImageView profileImage;
        TextView userName;
        TextView userPost;

        public FindTeamViewHolder(@NonNull View itemView) {
            super(itemView);

            profileImage = itemView.findViewById(R.id.employees_profile_image);
            userName = itemView.findViewById(R.id.employee_name);
            userPost = itemView.findViewById(R.id.user_post);
        }
    }

    private void initializeFields() {
        mToolbar = (Toolbar) findViewById(R.id.addTeamMember);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setTitle("Add Team Members");

        FindTeamReyclerList = (RecyclerView) findViewById(R.id.addTeamMates_recycler_list);
        FindTeamReyclerList.setLayoutManager(new LinearLayoutManager(addTeamMembers.this));

    }
}

Это мой класс контактов для извлечения базы данных компании из дерева

package com.example.proman;

public class Contacts {

    public String image, name, post;

    public Contacts(){}

    public Contacts(String image, String name, String post) {
        this.image = image;
        this.name = name;
        this.post = post;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPost() {
        return post;
    }

    public void setPost(String post) {
        this.post = post;
    }
}

Я предоставляю свой исходный код и дерево JSON ниже ....

{
  "Company Database" : {
    "-LhxK3kKs-k8skHBsDSk" : {
      "nac" : {
        "Diaries" : {
          "nac" : {
            "22 JUN 2019" : ""
          }
        },
        "Employees" : {
          "9fDXUnCgdqcY6fkpcxh4fUaigud2" : {
            "image" : "https://firebasestorage.googleapis.com/v0/b/proman-56b51.appspot.com/o/Company%2Fnull%2F1561175820944.jpg?alt=media&token=85e5117f-8039-4f56-ae5d-55162e874bbe",
            "name" : "agnsgm",
            "post" : "twms"
          }
        }
      }
    }
  },
  "Company References" : {
    "nac" : {
      "Company Name" : "nac",
      "Company UID" : "nac",
      "Key" : "-LhxK3kKs-k8skHBsDSk"
    }
  },
  "Users" : {
    "9fDXUnCgdqcY6fkpcxh4fUaigud2" : {
      "access" : {
        "nac" : ""
      },
      "company" : "nac",
      "contact" : "+919405445077",
      "image" : "https://firebasestorage.googleapis.com/v0/b/proman-56b51.appspot.com/o/Company%2Fnull%2F1561175820944.jpg?alt=media&token=85e5117f-8039-4f56-ae5d-55162e874bbe",
      "name" : "agnsgm",
      "post" : "twms",
      "uid" : "9fDXUnCgdqcY6fkpcxh4fUaigud2"
    }
  }
}

com.google.firebase.database.DatabaseException: невозможно преобразовать объект типа java.lang.String в тип com.example.proman.Contacts

Я ожидал, что в адаптере будут находиться пользовательское изображение, имя пользователя и плитка пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...