问题描述
我使用此代码使用 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,比如谷歌播放它的 recyclerview 的内置功能。
eg of section recyclerview -