1
我在RecyclerView適配器上進行延遲加載。首先,我獲取圖像元數據(如果有),然後讓畢加索下載實際圖像。RecyclerView延遲加載
public class PostHolder extends RecyclerView.ViewHolder implements Callback<Photo>{
private PostImageView cover;
private TextView content;
private long id;
public PostHolder(View itemView) {
super(itemView);
this.itemView.setOnClickListener(onClickListener);
content = (TextView) itemView.findViewById(R.id.post_content);
cover = (PostImageView) itemView.findViewById(R.id.post_image);
}
public void setPost(final Post post, int i){
cover.unsetImage();
this.id = post.getPhotoId();
itemView.setTag(i);
content.setText(post.getMessage());
if("photo".equals(post.getType()) || "video".equals(post.getType()) && id != 0L){
cache.get(id, this);
}else{
cover.setUrl(post.getImageUrl());
}
}
@Override
public void result(Photo result) {
if(result != null && result.getId() == PostHolder.this.id){
cover.setPhoto(result);
}
}
}
cache.get()
從緩存加載我的元數據,則返回結果與result()
。 setPost()
在onBindViewHolder()
中被調用。現在我收到了所有人最喜歡的查看者問題 - 我的ImageView
在切換到正確的圖像之前顯示不同的圖像。我知道畢加索正確處理了這一點,我檢查了我自己的加載,在那裏我比較持有人的ID和元數據ID。我已經花了幾個小時了。互聯網,你是我唯一的希望。