为什么Firebase使用Firebase Storage中的相同图像填充我的Viewholder

时间:2019-04-17 04:24:00

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

我有一个博客应用程序,由用户名,profileImage,描述和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

一切都很好,只是在整个recyclerview中重复了大约两个postImage。资料图片也来自同一用户,即,一两个图片用作其余用户的资料图片。 这是 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;
                    }
                });

            }
        }

这是一些屏幕截图。个人资料图片是相同的。 我要去哪里错了?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分: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

请让我知道它的进展!