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

问题描述

我使用此代码使用 RecyclerViewGridLayoutManager 中的标题项提供两列的跨度:

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,比如谷歌播放它的 recyclerview 的内置功能。

eg of section recyclerview -

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

https://github.com/alghifari/RecycledViewPoolExample

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...