如何正确获取 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 部分 -
我使用此代码在 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 语句中使用枚举,但这是另一回事。)
你必须使用 recyclerview viewpool 来做 recyclerview 的好方法,比如 google 发挥其内置的 recyclerview 功能。
例如 recyclerview 部分 -