сначала, когда я открываю фрагмент запросов, он загружает данные очень медленно, требуется около 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](https://i.stack.imgur.com/jBUhc.png)