【问题标题】:Why is firebase populating my viewholder with the same image from Firebase Storage为什么 Firebase 使用 Firebase 存储中的相同图像填充我的视图
【发布时间】:2019-09-07 05:54:08
【问题描述】:

我有一个由用户名、profileImage、description 和 postImage 组成的博客应用程序。我正在使用此代码从 firebase 检索这些项目

 FirebaseRecyclerAdapter<Blog,BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Blog, BlogViewHolder>(

            Blog.class,
            R.layout.blog_row,
            BlogViewHolder.class,
            mDatabase.orderByChild("TimeOrder")

    ) {
        @Override
        protected void populateViewHolder(final BlogViewHolder viewHolder, Blog model, int position) {


            viewHolder.setDescription(model.getDescription());
            if (isAdded()) {
                viewHolder.setImage(getActivity(), model.getPostimage());
            }
            viewHolder.setUid(model.getUid());//get username and profile picture from this

一切都很好,除了大约两个 postImage 在整个 recyclerview 中重复。个人资料图片也来自同一用户,即一张或两张图片用作其余用户的个人资料图片。 这是 setImage

的代码
 public void setImage(final Context con, final String image){

            final ImageView imageView = view.findViewById(R.id.post_image);


            if (postbool) {

                Picasso.with(con).load(image).placeholder(R.drawable.unnamed).error(R.drawable.imageerror).networkPolicy(NetworkPolicy.OFFLINE).into(imageView, new Callback() {
                    @Override
                    public void onSuccess() {

                        postbool = false;
                    }

                    @Override
                    public void onError() {

                        Picasso.with(con).load(image).placeholder(R.drawable.unnamed).into(imageView);

                        postbool = false;
                    }
                });

            }
        }

这是一些截图。头像是一样的。 我哪里错了?

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-storage android-recyclerview


    【解决方案1】:

    这可能是由于缓存问题!我的建议是,在填充值之前始终重置ViewHolder 中的所有视图。

    @Override
        protected void populateViewHolder(final BlogViewHolder viewHolder, Blog model, int position) {
            **reset all views**
            viewHolder.setDescription("");
            viewHolder.imageview.setImageDrawable(null);
            viewHolder.setUid("");
    
            viewHolder.setDescription(model.getDescription());
            if (isAdded()) {
                viewHolder.setImage(getActivity(), model.getPostimage());
            }
            viewHolder.setUid(model.getUid());//get username and profile picture from this
    

    请告诉我进展如何!

    【讨论】:

      猜你喜欢
      • 2018-10-02
      • 2016-03-28
      • 2018-10-15
      • 2020-11-01
      • 2023-03-13
      • 2020-07-04
      • 2017-05-16
      • 2021-07-30
      • 1970-01-01
      相关资源
      最近更新 更多