編集:問題は解決しました!!
RecyclerView
スクロール中にちらつきます。1 画面に 5 ~ 6 個の項目があります。下にスクロールすると、画面がちらつき、スクローラーがRecyclerView
. その後、もう一度上にスクロールするとReccyclerView
、最初の項目の上にスクロールしすぎます。上下にスクロールするプロセスを非常に速く繰り返すと、リサイクラー ビューが完全に下にスクロールし、空の背景だけが残ります。その後、どちらにスクロールしても何も表示されません。この後、スクローラーは再び動作しません。
を使用して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);