gpt4 book ai didi

java - 我正在尝试使用 getter 和 setter 从我的 firebase 数据库中检索数据,但收到错误消息说无法转换对象

转载 作者:行者123 更新时间:2023-12-01 19:36:54 25 4
gpt4 key购买 nike

我正在尝试创建一个组 Activity ,其中用户连接的所有组都可以通过此 Activity 显示。我已经创建了组 Activity 并在其中插入了回收器 View ,并尝试从数据库中检索数据,但不幸的是,当我在 Android 手机上运行应用程序时遇到错误。应用程序崩溃,在 logcat 中,我收到消息“无法将 java.lang.String 类型的对象转换为 com.nanb.alpha.modelclass 类型”。如果您不介意,请帮助我,以便我完成我的 Activity 。

下面的代码是用户可以创建群组的代码。

      private void groupmethos(final String groupname) {
DatabaseReference groupref = rootref.child("Group").push();
final String grouppushid = groupref.getKey();
Map groupmap = new HashMap<>();
groupmap.put("GroupprofileName",groupname);
groupmap.put("Creater",currentUser.getUid());
groupmap.put("StatusGroup","");
groupmap.put("profileimage","");
groupmap.put("id",grouppushid);
rootref.child("Group").child(grouppushid).updateChildren(groupmap).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
rootref.child("GroupMessage").child(grouppushid).setValue("").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
rootref.child("userconnectedtogroup").child(currentUser.getUid()).child(grouppushid).setValue("Added").addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(MainActivity.this,groupname + "group Created successfully",Toast.LENGTH_SHORT).show();
}
});

}
}
});

}
});
}

在上面的代码中,用户请求创建一个组。下面给出的是使用 getter 和 setter 从数据库获取数据的代码。

  package com.nanb.alpha;

public class modelclass {
private String GroupprofileName,StatusGroup,profileimage;

public modelclass() {
}

public modelclass(String groupprofileName, String statusGroup, String profileimage) {
this.GroupprofileName = groupprofileName;
this.StatusGroup = statusGroup;
this.profileimage = profileimage;
}

public String getGroupprofileName() {
return GroupprofileName;
}

public void setGroupprofileName(String groupprofileName) {
GroupprofileName = groupprofileName;
}

public String getStatusGroup() {
return StatusGroup;
}

public void setStatusGroup(String statusGroup) {
StatusGroup = statusGroup;
}

public String getProfileimage() {
return profileimage;
}

public void setProfileimage(String profileimage) {
this.profileimage = profileimage;
}
}

给定的代码是 recyclerview 将值设置为给定布局的代码。

     public class group extends AppCompatActivity {

private RecyclerView recyclerView;
private DatabaseReference conref,groupref;
private FirebaseAuth mAuth;
private String Currentuserid;


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

intialiation();
mAuth = FirebaseAuth.getInstance();
Currentuserid = mAuth.getCurrentUser().getUid();
conref = FirebaseDatabase.getInstance().getReference().child("userconnectedtogroup").child(Currentuserid);
groupref = FirebaseDatabase.getInstance().getReference().child("Group");
}

private void intialiation() {
recyclerView = findViewById(R.id.recyclerview);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
}

@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerOptions option = new FirebaseRecyclerOptions.Builder<modelclass>().setQuery(conref,modelclass.class).build();

FirebaseRecyclerAdapter<modelclass,group_viewHolder> adapter = new FirebaseRecyclerAdapter<modelclass, group_viewHolder>(option) {
@Override
protected void onBindViewHolder(@NonNull final group_viewHolder group_viewHolder, int i, @NonNull modelclass modelclass) {
String userid = getRef(i).getKey();
groupref.child(userid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChild("profileimage")){
String profileimage = dataSnapshot.child("profileimage").getValue().toString();
String groupname = dataSnapshot.child("GroupprofileName").getValue().toString();
String groupStatus = dataSnapshot.child("StatusGroup").getValue().toString();

group_viewHolder.groupname.setText(groupname);
group_viewHolder.groupStatus.setText(groupStatus);
Picasso.get().load(profileimage).into(group_viewHolder.profileimage);
}else{
String groupname = dataSnapshot.child("GroupprofileName").getValue().toString();
String groupStatus = dataSnapshot.child("StatusGroup").getValue().toString();

group_viewHolder.groupname.setText(groupname);
group_viewHolder.groupStatus.setText(groupStatus);
Picasso.get().load(R.mipmap.groupicon).into(group_viewHolder.profileimage);
}
}

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

}
});
}

@NonNull
@Override
public group_viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.grouplayout,parent,false);
group_viewHolder groupholder = new group_viewHolder(view);
return groupholder;
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
}

public static class group_viewHolder extends RecyclerView.ViewHolder{
TextView groupname,groupStatus;
CircleImageView profileimage;
public group_viewHolder(@NonNull View itemView) {
super(itemView);
groupname = itemView.findViewById(R.id.Group_name);
groupStatus = itemView.findViewById(R.id.Group_Status);
profileimage = itemView.findViewById(R.id.group_profile_dp);
}
}
}

下面给出的是我的 Firebase 数据库的图像。其中显示了与团体 Activity 相关的所有结构。 Group contains all the information related to the Group like admin id, group name, etc.in the Group message section will contain the message that will be shared inside that group. Userconnectedtogroup contains the group's id to which the user is connected or added.

下面是应用程序崩溃后显示的 logcat 消息。

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.nanb.alpha.modelclass at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database@@19.1.0:418) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@19.1.0:214) at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(com.google.firebase:firebase-database@@19.1.0:79) at com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database@@19.1.0:203) at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:29) at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:15) at com.firebase.ui.common.BaseCachingSnapshotParser.parseSnapshot(BaseCachingSnapshotParser.java:35) at com.firebase.ui.common.BaseObservableSnapshotArray.get(BaseObservableSnapshotArray.java:52) at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:106) at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:122) at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781) at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823) at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924) at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641) at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4194) at android.view.View.layout(View.java:15689) at android.view.ViewGroup.layout(ViewGroup.java:5048) at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1915) at android.view.View.layout(View.java:15689) at android.view.ViewGroup.layout(ViewGroup.java:5048) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15689) at android.view.ViewGroup.layout(ViewGroup.java:5048) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15689) at android.view.ViewGroup.layout(ViewGroup.java:5048) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android.view.View.layout(View.java:15689) at android.view.ViewGroup.layout(ViewGroup.java:5048) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) at android.widget.LinearLayout.onLayout(LinearLayout.java:1466) at android.view.View.layout(View.java:15689) at android.view.ViewGroup.layout(ViewGroup.java:5048) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579) at android.widget.FrameLayout.onLayout(FrameLayout.java:514) at android

最佳答案

在选项对象中使用 groupref 而不是 conref

关于java - 我正在尝试使用 getter 和 setter 从我的 firebase 数据库中检索数据,但收到错误消息说无法转换对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59208109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com