我沒有找到答案here,here和here。RecyclerView和Picasso圖像在滾動後消失
我有一個活動,顯示職位列表(有或沒有圖像)。當我向下滾動並使用SwipeRefreshLayout
向上滾動或刷新列表時,某些圖像可能會消失。我使用RecyclerView
顯示文章列表和Picasso
以加載圖像。這裏是我的網卡綁定:
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
// <...>
if (item.getPhoto() != null) {
Picasso.with(context)
.load(item.getPhoto())
.into(holder.mPostPhoto);
} else {
holder.mPostPhoto.setImageDrawable(null);
holder.mPostPhoto.setVisibility(View.GONE);
}
}
我發送HTTP請求來獲取職位,當我有新的數據我打電話PostsAdapter
:
public void addAll(List<PostResponse> items) {
this.items.clear();
this.items.addAll(items);
notifyDataSetChanged();
}
在MainActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// <...>
mPostAdapter = new PostAdapter();
mPosts.setLayoutManager(new LinearLayoutManager(MainActivity.this));
mPosts.setAdapter(mPostAdapter);
mPostsSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
updatePosts();
}
});
updatePosts();
}
private void updatePosts() {
new Api(this).getPosts(new GetPostsCallback(this) {
@Override
public void onSuccess(final Paging<PostResponse> paging) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mPostAdapter.addAll(paging.getData());
mPostsSwipeRefresh.setRefreshing(false);
}
});
}
});
}
我發現它是很基本,我不明白爲什麼圖像會一次又一次地消失。我的列表不長,並且在上傳到服務器之前調整了圖像的大小,它們不應該佔用太多內存。最糟糕的是,當它們消失時,它們不會重新加載。他們可能會重新加載後,我向下滾動向上...
- 請解釋爲什麼發生。
- 我該如何解決這個問題?
謝謝!
這是很難說爲什麼會這樣跟你貼的代碼。你能分享一點點嗎?你有沒有針對畢加索的特定配置政策? – Blackbelt
@Blackbelt請參閱更新。我沒有任何具體的配置。這是非常基本的:從服務器獲取帖子,每個帖子都有圖片url,使用picasso通過url將圖片加載到ImageView。 – Andrei
它看起來不錯 - 如果你登錄'item.getPhoto()'? – Blackbelt