我有包含物品的Recycler-view,可以垂直滚动。目前我所取得的成就是像列表一样接一个地添加。我需要将它们并排放置。
如下图所示
我的输出是
我的回收设备视图设置代码:
topicAdapter = new TopicAdapter(topicList, getActivity());
topicListView.setLayoutManager(new LinearLayoutManager(getActivity()));
topicListView.setAdapter(topicAdapter);
,适配器代码为:
public class TopicAdapter extends RecyclerView.Adapter<TopicAdapter.CategoryViewHolder> {
private List<Topic> topicList;
Context context;
public TopicAdapter(List<Topic> topicList, Context context) {
this.topicList = topicList;
this.context = context;
}
@Override
public CategoryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//inflate the layout file
View groceryProductView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_suggested_topics, parent, false);
CategoryViewHolder holder = new CategoryViewHolder(groceryProductView);
return holder;
}
@Override
public void onBindViewHolder(CategoryViewHolder holder, final int position) {
holder.txtview.setText(topicList.get(position).getName());
}
@Override
public int getItemCount() {
return topicList.size();
}
public class CategoryViewHolder extends RecyclerView.ViewHolder {
TextView txtview;
public CategoryViewHolder(View view) {
super(view);
txtview = view.findViewById(R.id.titleView);
}
}
}
答案 0 :(得分:0)
添加此
topicListView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL,false));
答案 1 :(得分:0)
我认为一种好方法是使用Material Choice Chips,您可以学习如何使用它们here。然后,您可以使用ChipGroup对它们进行分组,并允许它们跨越多行。
但是,要解决您的问题,您可以使用GridLayoutManager,然后提供SpanSizeLookup。
答案 2 :(得分:0)
您可以使用Google的最新设计组件ChipGroup来完成此操作
否则,您可以通过在网格布局中显示标记来使用Flexbox-Layout。
如果您想使用Flexbox-Layout,请选中answer of avik
答案 3 :(得分:0)
我可以建议您使用简单的解决方案,但是您无法通过此代码获得完整的要求。你会并肩而行。
替换
topicListView.setLayoutManager(new LinearLayoutManager(getActivity()));
与
topicListView.setLayoutManager(new GridLayoutManager(getActivity(), 3));
// 3 denotes the number of rows per column
答案 4 :(得分:0)
使用StaggeredGridLayoutManager进行recyclerview