Android Recyclerview项目并排

时间:2018-06-05 10:24:44

标签: android android-recyclerview recycler-adapter recyclerview-layout

我有包含物品的Recycler-view,可以垂直滚动。目前我所取得的成就是像列表一样接一个地添加。我需要将它们并排放置。

如下图所示

Target

我的输出是

Output

我的回收设备视图设置代码:

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);
        }
    }
}

5 个答案:

答案 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