【发布时间】: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