回收器视图在android studio中不显示一张卡视图

回收器视图在android studio中不显示一张卡视图,android,android-fragments,firebase-realtime-database,android-recyclerview,Android,Android Fragments,Firebase Realtime Database,Android Recyclerview,我试图通过recycler视图在片段的卡片视图中显示数组列表。数组列表包含五个值,将显示在片段的五个卡片视图上。但它只显示了四个。fragment的代码如下所示: public class AddMemberFragment extends Fragment { private RecyclerView mRecyclerView; private RecyclerView.Adapter mAdapter; private RecyclerView.LayoutManager mLayout

我试图通过recycler视图在片段的卡片视图中显示数组列表。数组列表包含五个值,将显示在片段的五个卡片视图上。但它只显示了四个。fragment的代码如下所示:

public class AddMemberFragment extends Fragment {

private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private View view ;
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference();
String userId;
String n_team ;
private ArrayList<Friend> friends;


public AddMemberFragment() {
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.addnewfriend_fragment, container, false);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    userId = firebaseUser.getUid();
    ManageTeamTabbedActivity activity = (ManageTeamTabbedActivity) getActivity();
    n_team = activity.getMyData();
    mRecyclerView = (RecyclerView) getView().findViewById(R.id.addNewFriend);
    mLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mLayoutManager);


    mRootRef.child("users").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            ArrayList<Friend> friendArrayList = new ArrayList<>();
            for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
                Log.d("demo", "USERID " + FirebaseAuth.getInstance().getCurrentUser().getUid());
                Friend friend = new Friend();
                friend.setId(userSnapshot.getKey());
                friend.setFriendName((String) userSnapshot.child("profiles").child("fname").getValue());  //Implement it
                friendArrayList.add(friend);
            }
            friends = friendArrayList;
            mAdapter = new AddFriendAdapter(getActivity(), friends, n_team);
            mRecyclerView.setAdapter(mAdapter);


        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}
公共类AddMemberFragment扩展了片段{
私人回收视图mRecyclerView;
专用回收器查看适配器mAdapter;
private RecyclerView.LayoutManager MLLayoutManager;
私人视野;
FirebaseUser FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference mRootRef=FirebaseDatabase.getInstance().getReference();
字符串用户标识;
弦乐队;
私人ArrayList朋友;
公共AddMemberFragment(){
}
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、Bundle savedInstanceState){
视图=充气机。充气(R.layout.addnewfriend_碎片,容器,false);
返回视图;
}
@凌驾
ActivityCreated上的公共无效(@Nullable Bundle savedinStateCState){
super.onActivityCreated(savedInstanceState);
userId=firebaseUser.getUid();
ManageTeamTabbedActivity=(ManageTeamTabbedActivity)getActivity();
n_team=activity.getMyData();
mRecyclerView=(RecyclerView)getView().findviewbyd(R.id.addNewFriend);
mLayoutManager=新的LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mllayoutmanager);
mRootRef.child(“用户”).addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
ArrayList FriendaryList=新建ArrayList();
对于(DataSnapshot userSnapshot:DataSnapshot.getChildren()){
Log.d(“demo”、“USERID”+FirebaseAuth.getInstance().getCurrentUser().getUid());
朋友=新朋友();
setId(userSnapshot.getKey());
friend.setFriendName((字符串)userSnapshot.child(“profiles”).child(“fname”).getValue();//实现它
friendArrayList.add(friend);
}
朋友=朋友列表;
mAdapter=newaddFriendAdapter(getActivity(),friends,n_团队);
mRecyclerView.setAdapter(mAdapter);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
适配器代码写在下面

public class AddFriendAdapter extends RecyclerView.Adapter<AddFriendAdapter.RecyclerViewHolder>{

private ArrayList<Friend> mData;
private Context mContext;
private FirebaseAuth auth;
private String u_team ;

public AddFriendAdapter(Context mContext, ArrayList<Friend> friendList , String u_team) {
    this.mData = friendList;
    this.mContext = mContext;
    this.u_team= u_team;
}

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.addnewfriend_layout, parent, false);
    AddFriendAdapter.RecyclerViewHolder viewHolder = new AddFriendAdapter.RecyclerViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(RecyclerViewHolder holder, final int position) {
    final Friend frnd =(Friend) mData.get(position);

    holder.friendName.setText(frnd.getFriendName());
    holder.addFriend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            frnd.setStatus("sent");
            final DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference();
            final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
            final String UID = firebaseUser.getUid();
            mRootRef.child("users").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    mRootRef.child("users").child(UID).child("Your Teams").child("requests").child(frnd.getId()).setValue(frnd);
                    Friend temp = new Friend();
                    temp.setId(firebaseUser.getUid());
                    temp.setFriendName(firebaseUser.getDisplayName());
                    temp.setStatus("received");
                    mRootRef.child("users").child(frnd.getId()).child("Your Teams ").child("requests").child(firebaseUser.getUid()).setValue(temp);
                    mData.remove(frnd);
                    notifyDataSetChanged();
                }

                @Override

                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    });
}

@Override
public int getItemCount() {
    return mData.size();
}

public class RecyclerViewHolder extends RecyclerView.ViewHolder {
    TextView friendName;
    ImageButton addFriend;

    public RecyclerViewHolder(View itemView) {
        super(itemView);
        friendName = (TextView)itemView.findViewById(R.id.textViewFriendName);
        addFriend = (ImageButton) itemView.findViewById(R.id.imagebuttonFriendAdd);
    }
}
公共类AddFriendAdapter扩展了RecyclerView.Adapter

我自己调试了很久,发现数组列表中的条目如预期的有五个


还附上了数据库图片以供参考。如图所示,它还有五个ID要显示,但“回收者”视图显示了四个ID。

由于此限制,我将我的评论放在了回答字段中:“你必须有50个声誉才能发表评论”

Log.d()
放入
onBindViewHolder
中以监视值如何?
在ActivityCreated()上使用“断点”分析数据不是一个好主意,因为UI可能还没有完全填充。此外,您还可以添加第6条记录,它是否显示4条或5条记录?这样,您可以确定这是最后一条记录还是其他问题。

当您打印ArrayList时,Android显示了什么?我通过Log.d()打印它在onBindViewHolder中,获得了正确的值数。我还添加了第6条记录。这六个值在数组列表中显示得非常正确。使用卡片视图打印此数组列表时,可能出现了一些问题。这行不是
mData.remove(frnd)吗
导致这种行为?我评论说问题仍然没有解决。所以我不认为是它导致了这种行为。我通过Log.d()打印了它在onBindViewHolder中,获得了正确的值数。我还添加了第6条记录。这六个值在数组列表中显示得非常正确。使用卡片视图打印此数组列表时,可能出现了一些问题。