【问题标题】:How to get the item view type of a SectionedRecyclerViewAdapter, properly? [closed]如何正确获取 SectionedRecyclerViewAdapter 的项目视图类型? [关闭]
【发布时间】:2021-06-25 00:27:49
【问题描述】:

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

【问题讨论】:

  • 你用的是哪个版本的recycler-view? getItemViewType 在哪个版本中被弃用了?
  • @beigirad 用于询问。不过,这整个问题都是一个错误。我正在编辑一个使用 SectionedRecyclerViewAdapter 的项目,但我没有意识到它不是 Android 库的一部分,因此无法回答这个问题。

标签: java android android-recyclerview android-adapter gridlayoutmanager


【解决方案1】:

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

例如部分recyclerview -

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

https://github.com/alghifari/RecycledViewPoolExample

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 2023-03-14
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多