В представлении Recycler не отображается одна карта в android studio - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь отобразить список массивов в представлении карты фрагмента через представление переработчика. Список массивов содержит пять значений, которые будут отображаться на пяти видах карт фрагмента. Но отображается только четыре. Код для фрагмента написан ниже:

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) {

        }
    });
}

Код адаптера написан ниже.

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);
    }
}

Также прикреплен скриншот эмулятора, в котором во фрагменте ADD NEW MEMBER есть четыре представления карты.

enter image description here

Я устал отлаживать это сам и обнаружил, что записей в списке массивов пять как ожидается. enter image description here

Изображение базы данных также прикреплено для справки. Как показано на рисунке, оно также имеет пять идентификаторов, которые должны отображаться, но в окне рециркуляции отображается четыре. enter image description here

1 Ответ

0 голосов
/ 26 марта 2020

Я поместил свой комментарий в поле ответа из-за этого ограничения: «Вы должны иметь 50 репутацию, чтобы комментировать».

Как насчет размещения Log.d() внутри onBindViewHolder для контроля значений? Использование «точек останова» для анализа данных на onActivityCreated() не очень хорошая идея, поскольку пользовательский интерфейс еще не был полностью заполнен. Кроме того, вы могли бы также добавить 6-ую запись, показывает ли она 4 или 5 записей? Таким образом, вы можете узнать, является ли это последней записью или что-то еще.

...