我有一个博客应用程序,由用户名,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;
}
});
}
}
这是一些屏幕截图。个人资料图片是相同的。 我要去哪里错了?
答案 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
请让我知道它的进展!