【问题标题】:List each sections vertically but show items inside it horizontal with SectionedRecyclerViewAdapter垂直列出每个部分,但使用 SectionedRecyclerViewAdapter 水平显示其中的项目
【发布时间】:2017-11-16 07:28:38
【问题描述】:
我想展示的内容类似于 google play 中的内容。我有很多产品类别。所以我需要垂直显示它,但我希望用户能够在每个类别中水平(左右)滚动产品,其中包含 2 个项目。
我已经学习了这个教程https://github.com/luizgrp/SectionedRecyclerViewAdapter
我已使用以下代码将布局管理器更改为水平:
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
但它水平显示所有部分和项目。
我想要的是如下图所示
有可能吗?请帮忙!!
【问题讨论】:
标签:
sectionedrecyclerviewadapter
【解决方案1】:
伪代码:
使用 Recycler View 并将其布局设置为垂直
RecyclerView my_recycler_view = (RecyclerView) findViewById(R.id.my_recycler_view);
my_recycler_view.setHasFixedSize(true);
RecyclerViewDataAdapter adapter = new RecyclerViewDataAdapter(this, allSampleData);
my_recycler_view.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
在 Recycler Adapter 内部膨胀布局并设置另一个适配器以在 onBindViewHolder 中填充该布局的数据。还将该布局设置为水平。
@Override
public ItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item, null);
ItemRowHolder mh = new ItemRowHolder(v);
return mh;
}
@Override
public void onBindViewHolder(ItemRowHolder itemRowHolder, int i) {
final String sectionName = dataList.get(i).getHeaderTitle();
ArrayList singleSectionItems = dataList.get(i).getAllItemsInSection();
itemRowHolder.itemTitle.setText(sectionName);
SectionListDataAdapter itemListDataAdapter = new SectionListDataAdapter(mContext, singleSectionItems);
itemRowHolder.recycler_view_list.setHasFixedSize(true);
itemRowHolder.recycler_view_list.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.HORIZONTAL, false));
itemRowHolder.recycler_view_list.setAdapter(itemListDataAdapter);
itemRowHolder.recycler_view_list.setNestedScrollingEnabled(false);
这个blog有更多解释和代码。
下载link 获取博客上给出的相同代码。