gpt4 book ai didi

android - 无法将类型为 java.lang.String 的对象转换为类型为 com.example.messenger.messenger.Friends

转载 作者:行者123 更新时间:2023-11-29 23:31:50 24 4
gpt4 key购买 nike

我想将 Firebase 数据显示到 RecyclerView 中。 firebase 由 DatabaseReference“Friends”组成,用户 ID 如下图所示,
enter image description here

我想通过这段代码获取特定id的数据,

mAuth = FirebaseAuth.getInstance();

mCurrent_user_id = mAuth.getCurrentUser().getUid();
queryFriends = FirebaseDatabase.getInstance().getReference().child("Friends").child(mCurrent_user_id);

在上一行中,.child(mCurrent_user_id) 产生了 fatal error ,应用程序崩溃了。我已经通过下面的代码记录了 mCurrent_user_id,它给出了与 Friends 数据库引用中相同的正确结果。

Log.d("sdfsdf", mCurrent_user_id);

日志结果为 com.example.messenger.messenger D/sdfsdf: wed5qPTCdcQVzVlRcBrMo1NX43v1

回收商代码:

queryFriends = FirebaseDatabase.getInstance().getReference().child("Friends").child(mCurrent_user_id);
queryFriends.keepSynced(true);

FirebaseRecyclerOptions<Friends> options =
new FirebaseRecyclerOptions.Builder<Friends>()
.setQuery(queryFriends, Friends.class)
.build();

firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Friends, FriendsViewHolder>(options) {
@Override
public FriendsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.adapter_users_activity_layout, parent, false);

return new FriendsViewHolder(view);
}

@Override
protected void onBindViewHolder(final FriendsViewHolder friendsViewHolder, int position, Friends friends) {
friendsViewHolder.setDate(friends.getDate());
}

观察者:

public static class FriendsViewHolder extends RecyclerView.ViewHolder {

View mView;

public FriendsViewHolder(View itemView) {
super(itemView);
mView = itemView;
}

public void setDate(String date){
TextView userStatusView = (TextView) mView.findViewById(R.id.user_single_status);
userStatusView.setText(date);
}

public void setName(String name){
TextView userNameView = (TextView) mView.findViewById(R.id.user_single_name);
userNameView.setText(name);
}

异常:

E/AndroidRuntime: FATAL EXCEPTION: main
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.messenger.messenger.Friends
at com.google.android.gms.internal.zzelw.zzb(Unknown Source)
at com.google.android.gms.internal.zzelw.zza(Unknown Source)

规则: enter image description here

最佳答案

我相信这些行会导致问题:

userNameView.setText(name);
userStatusView.setText(date);

您的 ViewHolder 在将数据设置到 View 中时出现问题。尝试在 onBindViewHolder() 方法中设置它们。

更新:尝试像这样作为您的Viewholder:

public class FriendsViewHolder extends RecyclerView.ViewHolder {

TextView textName;
TextView textDate;

public FriendsViewHolder(View itemView) {
super(itemView);

textName = itemView.findViewById(R.id.user_single_name);
textDate = itemView.findViewById(R.id.user_single_status);


}

}

还有这个,在 onBindViewHolder() 中:

friendsViewHolder.textName.setDate(friends.getName());
friendsViewHolder.textDate.setDate(friends.getDate());

我假设您的 Adapter 具有用于获取设置日期名称的 setters-getters。

关于android - 无法将类型为 java.lang.String 的对象转换为类型为 com.example.messenger.messenger.Friends,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52567122/

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