ImageView обновляется при прокрутке Recyclerview, загрузка данных из Firestore Android - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь загрузить данные из 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 или при загрузке данных из пожарного магазина. Заранее спасибо

...