Итак, я пытался извлечь данные из моей базы данных 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
Я ожидал, что в адаптере будут находиться пользовательское изображение, имя пользователя и плитка пользователя.