首页 > 解决方案 > 如何正确获取 SectionedRecyclerViewAdapter 的项目视图类型?

问题描述

RecyclerView我使用此代码使用以下代码在两列的跨度中提供标题项GridLayoutManager

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 语句中使用的枚举,但这是另一回事。)

标签: javaandroidandroid-recyclerviewandroid-adaptergridlayoutmanager

解决方案


你必须使用 recyclerview viewpool 很好的方式来做部分 recyclerview 像谷歌发挥它的 recyclerview 的内置功能。

例如部分recyclerview -

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

https://github.com/alghifari/RecycledViewPoolExample


推荐阅读