Android 不在firebase中的好友请求片段上显示好友请求

Android 不在firebase中的好友请求片段上显示好友请求,android,firebase,kotlin,firebase-realtime-database,Android,Firebase,Kotlin,Firebase Realtime Database,问题是我想在一个名为FriendsFragment的片段中显示所有friends请求。这个片段调用一个适配器类,其中包含一个名为ViewHolder的内部类。 但是朋友的请求没有显示出来。logcat中的消息总是显示“未连接适配器;跳过布局”。问题是什么 下面是我的片段FriendsFragment的代码: class FriendsFragment : Fragment() { private var recyclerView1: RecyclerView?=null pri

问题是我想在一个名为FriendsFragment的片段中显示所有friends请求。这个片段调用一个适配器类,其中包含一个名为ViewHolder的内部类。 但是朋友的请求没有显示出来。logcat中的消息总是显示“未连接适配器;跳过布局”。问题是什么

下面是我的片段FriendsFragment的代码:

class FriendsFragment : Fragment() {
    private  var recyclerView1: RecyclerView?=null
    private  var recyclerView2: RecyclerView?=null
    private  var mUsers:MutableList<Users>?=null
    private var friendAdapter:FriendAdapter?=null
    private lateinit var mAuth: FirebaseAuth
    private var currentState:String?=""
    private var firebaseUserId:String=""

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view= inflater.inflate(R.layout.fragment_friends, container, false)

        recyclerView1=view.findViewById(R.id.recycler_requests)
        recyclerView1?.setHasFixedSize(true)
        recyclerView1?.layoutManager=LinearLayoutManager(context)

        recyclerView2=view.findViewById(R.id.recycler_Friends)
        recyclerView2?.setHasFixedSize(true)
        recyclerView2?.layoutManager=LinearLayoutManager(context)
        mUsers=ArrayList()
        mAuth=FirebaseAuth.getInstance()
        firebaseUserId=mAuth.currentUser!!.uid
        val usersRef=FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com").reference.child("Users")
        val requestRef =
            FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com").reference.child(
                "Friends Requests"
            )

        usersRef.addValueEventListener(object:ValueEventListener{
            override fun onDataChange(p0: DataSnapshot) {
                mUsers?.clear()
                    for (snapshot in p0.children) {
                        val users: Users? = snapshot.getValue(Users::class.java)
                        if (!(users!!.getUid()).equals(firebaseUserId) && users != null) {
                            if(p0.child(firebaseUserId).child(users.getUid().toString()).child("request_type").value=="received" &&
                                p0.child(users.getUid().toString()).child(firebaseUserId).child("request_type").value=="sent"
                                    ) {

                                mUsers?.add(users)
                                friendAdapter =
                                    context?.let {
                                        FriendAdapter(
                                            it,
                                            mUsers as ArrayList<Users>,
                                            false
                                        )
                                    }
                                friendAdapter?.notifyDataSetChanged()
                                recyclerView1!!.adapter = friendAdapter
                            }
                        }
                    }
            }

            override fun onCancelled(p0: DatabaseError) {
            }
        })

        return view
    }
}
class-FriendsFragment:Fragment(){
私有变量RecycleServiceW1:RecycleServiceView?=null
私有变量recyclerView2:recyclerView2?=null
私有变量mUsers:MutableList?=null
私有变量friendAdapter:friendAdapter?=null
私有lateinit var mAuth:FirebaseAuth
私有变量currentState:字符串?=“”
私有变量firebaseUserId:String=“”
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
val视图=充气机。充气(R.layout.fragment\u friends,container,false)
recyclerView1=view.findViewById(R.id.recycler\u请求)
recyclerView1?.setHasFixedSize(真)
recyclerView1?.layoutManager=LinearLayoutManager(上下文)
recyclerView2=view.findViewById(R.id.recycler\u Friends)
RecycleServiceW2?.setHasFixedSize(真)
recyclerView2?.layoutManager=LinearLayoutManager(上下文)
mUsers=ArrayList()
mAuth=FirebaseAuth.getInstance()
firebaseUserId=mAuth.currentUser!!.uid
val usersRef=FirebaseDatabase.getInstance(“https://online-chat-541f3-default-rtdb.firebaseio.com“”。参考。子(“用户”)
val请求参考=
FirebaseDatabase.getInstance(“https://online-chat-541f3-default-rtdb.firebaseio.com).reference.child(
“好友请求”
)
usersRef.addValueEventListener(对象:ValueEventListener{
覆盖数据更改(p0:DataSnapshot){
缪斯?.clear()
用于(p0.children中的快照){
val用户:用户?=snapshot.getValue(用户::class.java)
如果(!(users!!.getUid()).equals(firebaseUserId)&&users!=null){
if(p0.child(firebaseUserId).child(users.getUid().toString()).child(“请求类型”).value==“已接收”&&
p0.child(users.getUid().toString()).child(firebaseUserId).child(“请求类型”).value==“已发送”
) {
缪斯?添加(用户)
友谊适配器=
上下文?让我们来看看{
友谊适配器(
信息技术
作为艺术家的缪斯家,
假的
)
}
friendAdapter?.notifyDataSetChanged()
recyclerView1!!.adapter=friendAdapter
}
}
}
}
已取消覆盖乐趣(p0:DatabaseError){
}
})
返回视图
}
}
显示好友请求的回收器视图为RecycleServiceW1。 此外,还提供了附加到视图保持架的布局的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/friendsProfileResource"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/username"
            >
        </de.hdodenhof.circleimageview.CircleImageView>

        <TextView
            android:id="@+id/usernameFriendsResource"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/friendsProfileResource"
            android:layout_marginTop="10dp"
            android:layout_marginStart="30dp"
            android:text="Username"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="@color/colorPrimaryDark"
            >
        </TextView>
        <ImageView
            android:id="@+id/online_status_img"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:src="@drawable/online"
            android:layout_below="@id/usernameFriendsResource"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="10dp"
            android:visibility="invisible"
            >
        </ImageView>

        <TextView
            android:id="@+id/last_message_friends_ressource"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/usernameFriendsResource"
            android:layout_toRightOf="@id/friendsProfileResource"
            android:layout_marginTop="5dp"
            android:layout_marginStart="30dp"
            android:text="last message"
            android:textSize="18sp"
            android:maxLines="1"
            android:textColor="@color/colorPrimary"
            >
        </TextView>

        <Button
            android:id="@+id/accept_friend_button"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/usernameFriendsResource"
            android:layout_marginStart="40dp"
            android:text="Accept"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="@color/colorPrimaryDark"
            android:background="@drawable/buttons2"
            android:textAllCaps="false"    
            >

        </Button>
        <Button
            android:id="@+id/cancel_friend_button"
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/accept_friend_button"
            android:layout_marginStart="10dp"
            android:text="Cancel"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="@color/colorPrimaryDark"
            android:background="@drawable/buttons2"
            android:textAllCaps="false"
            android:layout_marginEnd="10dp"
            >

        </Button>

    </RelativeLayout>

</LinearLayout>

这也是friendsAdapter类的代码:

package com.example.online_chat.Adapters

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.example.online_chat.Models.Users
import com.example.online_chat.R
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.squareup.picasso.Picasso
import de.hdodenhof.circleimageview.CircleImageView

class FriendAdapter(private var mContext: Context,private var mUsers: List<Users>,private var isChatChecked:Boolean):RecyclerView.Adapter<FriendAdapter.ViewHolder?>() {

    private var currentState:String?=""
    private lateinit var mAuth:FirebaseAuth
    private var firebaseUserId:String=""

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view=LayoutInflater.from(mContext).inflate(R.layout.user_friends,parent,false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val users=mUsers[position]
        holder.usernameFriend!!.text=users.getUsername()
        holder.fullNameFriend!!.text=users.getFullName()
        Picasso.get().load(users.getProfile()).into(holder.profileImageFriend)
        mAuth= FirebaseAuth.getInstance()
        firebaseUserId=mAuth.currentUser!!.uid

       
    }

    override fun getItemCount(): Int {
        return mUsers.size
    }

    class ViewHolder(itemView: View):RecyclerView.ViewHolder(itemView){

        var usernameFriend:TextView?=itemView.findViewById(R.id.usernameFriendsResource)
        var fullNameFriend:TextView?=itemView.findViewById(R.id.last_message_friends_ressource)
        var profileImageFriend:CircleImageView?=itemView.findViewById(R.id.friendsProfileResource)
        var acceptBtn: Button?=itemView.findViewById(R.id.accept_friend_button)
        var cancelBtn:Button?=itemView.findViewById(R.id.cancel_friend_button)

    }
}
package com.example.online\u chat.Adapters
导入android.content.Context
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入android.widget.Button
导入android.widget.TextView
导入androidx.recyclerview.widget.recyclerview
导入com.example.online_chat.Models.Users
导入com.example.online\u chat.R
导入com.google.firebase.auth.FirebaseAuth
导入com.google.firebase.database.DataSnapshot
导入com.google.firebase.database.DatabaseError
导入com.google.firebase.database.FirebaseDatabase
导入com.google.firebase.database.ValueEventListener
导入com.squareup.picasso.picasso
导入de.hdodenhof.circleimageview.circleimageview
类FriendAdapter(private var mContext:Context,private var mUsers:List,private var isChatChecked:Boolean):RecyclerView.Adapter(){
私有变量currentState:字符串?=“”
私有lateinit var mAuth:FirebaseAuth
私有变量firebaseUserId:String=“”
override onCreateViewHolder(父级:ViewGroup,viewType:Int):ViewHolder{
val view=LayoutInflater.from(mContext).充气(R.layout.user\u friends,parent,false)
返回视图保持器(视图)
}
覆盖BindViewHolder(holder:ViewHolder,位置:Int){
val用户=缪斯[位置]
holder.usernameFriend!!.text=users.getUsername()
holder.fullNameFriend!!.text=users.getFullName()
Picasso.get().load(users.getProfile()).into(holder.profileImageFriend)
mAuth=FirebaseAuth.getInstance()
firebaseUserId=mAuth.currentUser!!.uid
}
重写getItemCount():Int{
返回mUsers.size
}
类ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
var usernameFriend:TextView?=itemView.findViewById(R.id.usernameFriendsResource)
var fullNameFriend:TextView?=itemView.findViewById(R.id.last\u message\u friends\u ressource)
var profileImageFriend:CircleImageView?=itemView.findViewById(R.id.friendsProfileResource)
var acceptBtn:Button?=itemviewbyd(R.id.accept\u friend\u Button)
var cancelBtn:Button?=itemviewbyd(R.id.cancel\u friend\u Button)
}
}

谢谢大家!

您确定此条件有效吗

if(p0.child(firebaseUserId).child(users.getUid().toString()).child(
FriendAdapter(it,mUsers as ArrayList<Users>,false)

 usersRef.addValueEventListener( DataSnapshot ->
    mUsers?.clear()
    for (snapshot in p0.children) {
      val user: Users? = snapshot.getValue(Users::class.java)
      // check that reference 
      val requestRef = FirebaseDatabase.getInstance("https://online-chat-541f3-default-rtdb.firebaseio.com").reference.child("Friends Requests/" + user.getId()) 
      // this is pseudo code
      requestRef.addValueEventListener( friendsdataSnapshot -> 
      for (friend if friendsDataSnapshot) {
          //addFriend to mUsersList 
       }
       friendAdapter = context?.let {
           FriendAdapter(it, mUsers as ArrayList<Users>, false)
       }
       friendAdapter?.notifyDataSetChanged()
       recyclerView1!!.adapter = friendAdapter
  )