Я столкнулся с проблемой при использовании RecyclerViews. В основном во время начальной загрузки RecyclerView (после того, как я запустил операцию) есть небольшая задержка до появления элементов.Почему перенос адаптера RecyclerView в другом классе вызывает другое поведение?
После экспериментов на некоторое время я нашел способ, чтобы удалить эту задержку, обернув мой адаптер в другом классе следующим образом:
public class AdapterWrapper extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private RecyclerView.Adapter<RecyclerView.ViewHolder> mAdapter;
public AdapterWrapper(RecyclerView.Adapter<RecyclerView.ViewHolder> adapter) {
mAdapter = adapter;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return mAdapter.onCreateViewHolder(parent, viewType);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
mAdapter.onBindViewHolder(holder, position);
}
@Override
public int getItemCount() {
return mAdapter.getItemCount();
}
@Override
public int getItemViewType(int position) {
return mAdapter.getItemViewType(position);
}
}
Тогда в моей деятельности у меня есть это:
protected void onCreate(Bundle savedInstanceState) {
...
setUpRecyclerView();
...
}
public void setUpRecyclerView() {
mAdapter = new MyAdapter(this, mCursor);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
//mRecyclerView.setAdapter(mAdapter); // This causes a small delay.
mRecyclerView.setAdapter(new AdapterWrapper(mAdapter)); // This doesn't
}
Этот кажется мне очень странным, и я понятия не имею, почему поведение отличается. Кто-нибудь получил какую-либо потенциальную теорию, чтобы объяснить это?
Дополнительная информация:
-Я использую курсор-загрузчик, чтобы предоставить данные моему адаптеру.
-Мой адаптер подклассы с помощью CursorRecyclerAdapter найденного на http://quanturium.github.io