Я пытаюсь загрузить данные из firestore
и firestore-storage
. Теперь мой запрос, и я получаю трудности с загрузкой данных. Всякий раз, когда я прокручиваю recyclerview
, тогда imageview
обновляется, это означает, что когда я нахожусь в положении 5, чем загруженное изображение, но когда я прокручиваю список, я попадаю в положение 5, тогда он становится невидимым, а затем снова видимым, мой код выглядит следующим образом.
private void getFireData(){
final int limit = 15;
mRecyclerView=(RecyclerView)rootView.findViewById(R.id.rv_post_list);
mRecyclerView.setHasFixedSize(true);
((SimpleItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
mRecyclerView.invalidate();
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
final FirebaseFirestore mLikeCommentDb=FirebaseFirestore.getInstance();
final CollectionReference mcRef=FirebaseFirestore.getInstance()
.collection("posts");
query = mcRef.orderBy("datetime",
Query.Direction.DESCENDING)
.limit(limit);
response = new FirestoreRecyclerOptions.Builder<Posts>()
.setLifecycleOwner(getActivity())
.setQuery(query, Posts.class)
.build();
adapterPost = new FirestoreRecyclerAdapter<Posts,PostAdapter>(response) {
@Override
public void onBindViewHolder(final PostAdapter holder, final int position,
final Posts model) {
isDataloaded=true;
swipeView.setRefreshing(false);
holder.bindMyView(getActivity(),holder,position,model, response.getSnapshots(),
myContext,mLikeCommentDb);
}
@Override
public PostAdapter onCreateViewHolder(ViewGroup group, int i) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(group.getContext())
.inflate(R.layout.custum_home_post, group, false);
return new PostAdapter(view);
}
@Override
public int getItemCount() {
return super.getItemCount();
}
@NonNull
@Override
public Posts getItem(int position) {
return super.getItem(position);
}
@Override
public void onDataChanged() {
super.onDataChanged();
}
};
mRecyclerView.setAdapter(adapterPost);
adapterPost.notifyDataSetChanged();
}
код для настройки фотографии в bindView
FirebaseStorage fs = FirebaseStorage.getInstance();
fs.getReferenceFromUrl(photourl);
StorageReference mImageRef = fs.getReference();
String ssss = fs.getReferenceFromUrl(photourl).getName();
mImageRef.child("post_photos/" + ssss).getDownloadUrl()
.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
postImageUri = uri;
Picasso.with(holder.ivPostphoto.getContext()).
load(uri).
placeholder(R.drawable.ic_image_black_24dp).
fit().
into(holder.ivPostphoto);
float thumb=0;
/*Glide.with(context).asBitmap()
.load(uri)
.thumbnail(thumb)
.into(holder.ivPostphoto);*/
//ivPostphoto.setImageURI(uri);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
Пожалуйста, прочитайте это полностью и, пожалуйста, ответьте. Я перепробовал все, но не получил идеальный результат. поэтому, пожалуйста, помогите мне об этом. Я не знаю, что именно проблема, на recyclerview
или при загрузке данных из пожарного магазина. Заранее спасибо