【问题标题】:RecyclerView's GridLayoutManager - Alternating 1 and 2 column rowsRecyclerView 的 GridLayoutManager - 交替 1 和 2 列行
【发布时间】:2016-12-10 12:31:50
【问题描述】:

我想要第一行中的 1 张图像和第二行中的 2 张图像并重复......
我希望recyclerview是这样的

【问题讨论】:

  • 列表视图或循环视图中的用户标题
  • 那么这些布局会交替出现吗?如果是,那么我会建议使用 LinearLayout 管理器而不是 GridLayout 管理器。如果你愿意,我可以发布我的答案。
  • @bhavesh 是的,你可以发布你的答案

标签: android android-layout android-recyclerview gridlayoutmanager


【解决方案1】:
    GridLayoutManager layout_manager = new GridLayoutManager(mContext, 2);
        manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return (position % 3 == 0 ? 2 : 1);
            }
        });

/* Custom Adapter */

        Adapter contact_adapter = new Adapter(MainActivity.this, all_contacts_list);
        recyclerView.setLayoutManager(layout_manager);
        recyclerView.setHasFixedSize(true);
        recyclerView.setAdapter(contact_adapter);

【讨论】:

  • 这个答案需要更多细节。请参阅«[解释完全]»线程 (meta.stackexchange.com/questions/114762/…)
  • 问题是,质量检查机器人将您的答案标记为可能低质量的答案。版主可以选择建议删除此类答案,但我没有建议您添加相关解释,因为您的答案可能会解决问题,并且所有用户可能对您的代码不满意。你点击链接了吗?
【解决方案2】:

你应该这样做:

mRecyclerView = (RecyclerView) view.findViewById(R.id.grid);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            switch(mAdapter.getItemViewType(position)){
                case MyAdapter.TYPE_HEADER:
                    return 2;
                case MyAdapter.TYPE_ITEM:
                    return 1;
                default:
                    return -1;
            }
        }
    });

mRecyclerView.setLayoutManager(mLayoutManager);

并将您的项目类型设置为适配器中的标题或项目

【讨论】:

    【解决方案3】:
    RecyclerView mRecyclerView =
        (RecyclerView) findViewById(R.id.recycler_view);
    YourAdapter yourAdapter = new YourAdapter(this, arrayList);
    if (mRecyclerView != null) {
      mRecyclerView.setLayoutManager(new GridLayoutManager(this, 4));
      mRecyclerView.setAdapter(yourAdapter);
    }
    

    【讨论】:

    • 1) 请解释您的答案,而不仅仅是转储代码。 2)这似乎没有像要求的问题那样交替 1 和 2 列
    猜你喜欢
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多