Android Recyclerview项目并排

3
我有一个带有项目的recycler-view,可以在垂直方向上滚动。目前我实现的是将项目一个接一个地添加,就像列表一样。但我需要将它们并排放置。 就像下面的图片

Target

我的输出是

Output

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

https://dev59.com/m1oU5IYBdhLWcg3wLEwM - IntelliJ Amiya
setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true)); - IntelliJ Amiya
他们在支持库28中增加了芯片。1 2 - denvercoder9
将您的适配器布局代码添加进定义布局XML代码中,这意味着在适配器中使用该布局。 - user4571931
5个回答

1
我可以为您提供一个简单的解决方案,但是这段代码无法完全满足您的需求。您将会得到并排的结果。
替换

topicListView.setLayoutManager(new LinearLayoutManager(getActivity()));

使用

topicListView.setLayoutManager(new GridLayoutManager(getActivity(), 3)); 

// 3 denotes the number of rows per column

0

添加此内容

  topicListView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL,false));

这并不能解决他的问题,这只会让它们水平排列在单个文件中。他希望它能够分行显示。 - Anthony Cannon

0

0
您可以使用Google的最新设计组件ChipGroup来完成此操作。 否则,您可以使用Flexbox-Layout在网格布局中显示标签。

如果您希望选择Flexbox-Layout,请查看avik的答案

我使用了flexbox来实现这个。但是你有什么想法可以让元素居中吗?这是我的当前输出:https://imgur.com/5oGHiMW - Ahsan Aasim
是的,就像 flexboxLayoutManager.setJustifyContent(JustifyContent.CENTER); 这样,只需使用 JustifyContent.CENTER - Varad Mondkar
但是您可能还需要将layout_gravity属性设置为RecyclerView android:layout_gravity="center" - Varad Mondkar

0
使用StaggeredGridLayoutManager来管理recyclerview。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接