загрузка данных в фрагмент изображения перемешивается после прокрутки вверх и вниз - PullRequest
0 голосов
/ 18 апреля 2020

сначала, когда я открываю фрагмент запросов, он загружает данные очень медленно, требуется около 2–3 секунд, чтобы он начал отображать данные, я хочу, чтобы это происходило быстро, как в Instagram. и когда я прокручиваю относительное расположение вверх и вниз, и у него много запросов к изображениям, когда они прокручиваются вверх и вниз со скоростью, они смешивают изображения пользователя между собой, я хочу, чтобы изображения оставались такими, как они есть, и данные загружались быстрее. это код, который я использую.

public class FriendRequest extends Fragment {
    private RecyclerView mFriendsList;
    private DatabaseReference mFriendsDatabase;
    private DatabaseReference mUsersDatabase;
    private FirebaseAuth mAuth;
    private String mCurrent_user_id;
    private View mMainView;

    private ProgressDialog progressDialog;
    private DatabaseReference friendlist;
    private FirebaseUser currentUser;
    private DatabaseReference mfriendrequest;

    private  DatabaseReference mRootRef;



    Button acc,rej;
    public FriendRequest() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        mMainView = inflater.inflate(R.layout.fragment_friend_request, container, false);
        mFriendsList = mMainView.findViewById(R.id.requests);
        mAuth = FirebaseAuth.getInstance();
        mCurrent_user_id = mAuth.getCurrentUser().getUid();
        progressDialog = new ProgressDialog(getContext());
        friendlist = FirebaseDatabase.getInstance().getReference().child("FriendsList");

        currentUser = FirebaseAuth.getInstance().getCurrentUser();
        mfriendrequest = FirebaseDatabase.getInstance().getReference().child("FriendRequest");


        acc = mMainView.findViewById(R.id.accept);
        rej = mMainView.findViewById(R.id.reject);


        mRootRef = FirebaseDatabase.getInstance().getReference();


        mFriendsDatabase = 
        FirebaseDatabase.getInstance().getReference().child("FriendRequest").child(mCurrent_user_id);
        mFriendsDatabase.keepSynced(true);
        mUsersDatabase = FirebaseDatabase.getInstance().getReference();
        mUsersDatabase.keepSynced(true);


        mFriendsList.setHasFixedSize(true);
        mFriendsList.setLayoutManager(new LinearLayoutManager(getContext()));




        // Inflate the layout for this fragment
        return mMainView;
    }


    public void onStart() {
        super.onStart();

        FirebaseRecyclerOptions<Users> options =

                new FirebaseRecyclerOptions.Builder<Users>()
                        .setQuery(mFriendsDatabase, Users.class)
                        .build();

        FirebaseRecyclerAdapter friendsRecyclerViewAdapter = new FirebaseRecyclerAdapter<Users, 
        FriendRequest.FriendsViewHolder>(options) {


            @Override

            protected void onBindViewHolder(@NonNull final FriendsViewHolder friendsViewHolder, int 
            i, @NonNull final Users users) {

                final String UID = getRef(i).getKey();

                mUsersDatabase.child(UID).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        final String firstname = 
                        dataSnapshot.child("firstname").getValue().toString();
                        final String lastname = dataSnapshot.child("lastname").getValue().toString();
                        String user = dataSnapshot.child("username").getValue().toString();


                        friendsViewHolder.setfirstame(firstname);
                        friendsViewHolder.setUserImage(UID);
                        friendsViewHolder.setlastname(lastname);
                        //friendsViewHolder.setusername(user);


                        // When Click to Friends View
                        friendsViewHolder.mView.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {


                                Intent profileIntent = new Intent(getContext(),Profilenew.class);
                                profileIntent.putExtra("User id", UID);
                                startActivity(profileIntent);


                            }
                        });


                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }




            @NonNull
            @Override
            public FriendRequest.FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int 
            i) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.friend_request_layout, parent, false);
                return new FriendRequest.FriendsViewHolder(view);

            }






        };

        mFriendsList.setAdapter(friendsRecyclerViewAdapter);
        friendsRecyclerViewAdapter.startListening();


    }


    public class FriendsViewHolder extends RecyclerView.ViewHolder {

        View mView;

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

            mView = itemView;

        }

        public void setDate(String date) {

            TextView userStatusView = mView.findViewById(R.id.firstname);
            userStatusView.setText(date);

        }

        public void setfirstame(String name) {

            TextView userNameView = mView.findViewById(R.id.srchfiestname);
            userNameView.setText(name);

        }

        public void setlastname(String name) {

            TextView userNameView = mView.findViewById(R.id.srchlasttname);
            userNameView.setText(name);

        }

       /* public void setusername(String name) {

            TextView userNameView = mView.findViewById(R.id.srchusername);
            userNameView.setText(name);

        }

        */

        public void setUserImage(String pp) {


            final CircleImageView image = mView.findViewById(R.id.srchimg);


            final StorageReference mImageRef = 
            FirebaseStorage.getInstance().getReference("Profile_image/thumbs/" + pp + ".jpg");

            final long ONE_MEGABYTE = 1024 * 1024;
            mImageRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
                @Override
                public void onSuccess(byte[] bytes) {

                    Bitmap bm = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                    DisplayMetrics dm = new DisplayMetrics();
                    ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm);

                    image.setMinimumHeight(dm.heightPixels);
                    image.setMinimumWidth(dm.widthPixels);
                    image.setImageBitmap(bm);


                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    // Handle any errors


                }
            });


        }
    }










}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...