如何正确获取 SectionedRecyclerViewAdapter 的项目视图类型?

How to get the item view type of a SectionedRecyclerViewAdapter, properly?

我使用此代码在 RecyclerView 中使用 GridLayoutManager:

为两列的跨度提供 header 项
MyAdapter myAdapter = new MyAdapter(this, items);
this.myRecyclerView.setAdapter(myAdapter);

GridLayoutManager layoutManager = new GridLayoutManager(getContext(), 2);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
    @Override
    public int getSpanSize(int position) {
        switch (myAdapter.getItemViewType(position)) {
            case -1: // VIEW_TYPE_ITEM
                return 1;
            default: // VIEW_TYPE_HEADER
                return 2;
        }
    }
});
this.myRecyclerView.setLayoutManager(layoutManager);

这有效,但它抱怨我对 getItemViewType 的使用,因为它已被弃用。我的适配器扩展 SectionedRecyclerViewAdapter<RecyclerView.ViewHolder>.

我应该改用什么?

(此外,我不知道应该在 switch 语句中使用枚举,但这是另一回事。)

你必须使用 recyclerview viewpool 来做 recyclerview 的好方法,比如 google 发挥其内置的 recyclerview 功能。

例如 recyclerview 部分 -

https://www.youtube.com/watch?v=EyUjw6b5gXE

https://github.com/alghifari/RecycledViewPoolExample