编辑:问题解决了!!
滚动时我的RecyclerView
闪烁。单屏有5-6个项目。当我向下滚动时,屏幕闪烁并且滚动条跳回到RecyclerView
. 现在,如果我再次向上滚动,则ReccyclerView
滚动到第一项上方太多了。如果我非常快速地重复上下滚动过程,回收站视图会完全向下滚动,只留下一个空白背景。在那之后,如果我滚动任何一种方式,什么都不会出现。此后,Scroller 不再工作。
我正在使用Lucasr Two Way View
. 我正在讨论的问题也在RecyclerView.Adapter 和 UIL 的一些奇怪但尚未解决。我的 20 多张图片RecyclerView
,可以增加。每个图像的大小大于 100kb。
为了加载图像,我尝试Universal Image Loader(UIL)
启用缓存。但这没有帮助。闪烁持续存在UIL
。我也测试过,GLIDE
但问题仍然存在。
为了更清楚,这里是我的ADM
.
这是我的持有人课程:
public class TileAdapter extends BaseTwoWayViewAdapter {
private static final String TAG = makeLogTag(TileAdapter.class);
private Context context;
private List<UserCategory> itemsList;
public TileAdapter(Context context, List<Tile> itemsList) {
super(context, itemsList);
this.context = context;
this.itemsList = itemsList;
}
@Override
public TestHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_tile_full_length, null);
TestHolder tileHolder = new TestHolder(v);
return tileHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
final Test tile = itemsList.get(position);
final TestHolder tileHolder = (TestHolder) holder;
final View itemView = tileHolder.itemView;
tileHolder.bindHolder(tile);
}
/**
* View Holder class
*/
public class TestHolder extends RecyclerView.ViewHolder {
private TextView titleTextView;
private ImageView imageView;
private ImageLoader imageLoader;
public TestHolder(View view) {
super(view);
this.titleTextView = (TextView) view.findViewById(R.id.titleTextView);
this.imageView = (ImageView) view.findViewById(R.id.imageView);
imageLoader = new ImageLoader(context);
}
void bindHolder(final Tile tile) {
titleTextView.setText(tile.getName());
if(imageView != null) {
ViewParent parent = imageView.getParent();
int backgroundColor = context.getResources().getColor(R.color.backgroundColor);
if (parent != null && parent instanceof View) {
((View) parent).setBackgroundColor(backgroundColor);
} else {
imageView.setBackgroundColor(backgroundColor);
}
imageLoader.loadImageUsingResId(tile.getImageResourcesId(), true, imageView);
}
}
}
}
以下是我将适配器设置为 RecyclerView 的方式:
TileAdapter tileAdapter = new TileAdapter(getActivity(), itemsList);
mRecyclerView.setAdapter(tileAdapter);