我在使用RecyclerView時遇到了一個問題。基本上在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
}
這對我來說似乎很奇怪,我不知道爲什麼這種行爲是不同的。有沒有人有任何可能的理論來解釋這一點?
其他信息:
- 我正在使用遊標加載器向我的適配器提供數據。
- 我的適配器是用在http://quanturium.github.io