Tôi có RecyclerView tải một số dữ liệu từ API, bao gồm url hình ảnh và một số dữ liệu và tôi sử dụng networkImageView để tải hình ảnh lười biếng.
@Override
public void onResponse(List<Item> response) {
mItems.clear();
for (Item item : response) {
mItems.add(item);
}
mAdapter.notifyDataSetChanged();
mSwipeRefreshLayout.setRefreshing(false);
}
Đây là cách triển khai cho Bộ điều hợp:
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) {
if (isHeader(position)) {
return;
}
// - get element from your dataset at this position
// - replace the contents of the view with that element
MyViewHolder holder = (MyViewHolder) viewHolder;
final Item item = mItems.get(position - 1); // Subtract 1 for header
holder.title.setText(item.getTitle());
holder.image.setImageUrl(item.getImg_url(), VolleyClient.getInstance(mCtx).getImageLoader());
holder.image.setErrorImageResId(android.R.drawable.ic_dialog_alert);
holder.origin.setText(item.getOrigin());
}
Vấn đề là khi chúng tôi làm mới trong Chế độ xem tái chế, nó nhấp nháy trong một thời gian rất ngắn trong lúc ban đầu trông rất lạ.
Tôi chỉ sử dụng GridView / ListView thay thế và nó hoạt động như tôi mong đợi. Không có chớp mắt.
cấu hình cho RecycleView trong onViewCreated of my Fragment
:
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
mGridLayoutManager = (GridLayoutManager) mRecyclerView.getLayoutManager();
mGridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return mAdapter.isHeader(position) ? mGridLayoutManager.getSpanCount() : 1;
}
});
mRecyclerView.setAdapter(mAdapter);
Bất cứ ai phải đối mặt với một vấn đề như vậy? Điều gì có thể là lý do?