【问题标题】:How to order itens with StaggeredGridLayoutManager如何使用 StaggeredGridLayoutManager 订购项目
【发布时间】:2020-06-28 13:05:56
【问题描述】:

我正在创建一个网格,如下图所示。

输入列表:{“位置 0”、“位置 1”、“位置 2”、“位置 3”、“位置 4”、.....}

问题是,我想要一个包含两种组件的菜单。

small -->图片中的位置0

巨大的 --> 图片中的位置 2

所以,当我的适配器从 位置 4 创建项目时,它是无序的。

预期输出:

位置 1、位置 2、位置 3

位置 4、位置 5、位置 6

public class SampleRecyclerViewAdapter extends RecyclerView.Adapter<SampleViewHolders> {
private List<ItemObject> itemList;
private Context context;

public SampleRecyclerViewAdapter(Context context,
                                 List<ItemObject> itemList) {
    this.itemList = itemList;
    this.context = context;
}

@Override
public SampleViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {
    View layoutView = LayoutInflater.from(parent.getContext()).inflate(
            R.layout.book_list_item, null);
    SampleViewHolders rcv = new SampleViewHolders(layoutView);
    return rcv;
}

@Override
public void onBindViewHolder(SampleViewHolders holder, int position) {
    holder.bookName.setText(itemList.get(position).getName()  + position);

    if (position % 2 == 0) {
        holder.itemView.setMinimumHeight(250);
    } else {
        holder.itemView.setMinimumHeight(300);
    }
}

@Override
public int getItemCount() {
    return this.itemList.size();
}

}

【问题讨论】:

  • 这样设置spanCount GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
  • 嗨,问题是元素的高度不一样。
  • 什么剂量 setMinimumHeight 方法剂量?
  • @JustASimpleLineOfCode 他遇到的问题是由于适配器调整了可用跨度区域之间的下一行,因此从逻辑角度更改了项目的顺序
  • 对了,你能找到解决问题的办法吗?我不知道构建此布局的最佳方法是什么。

标签: android performance android-studio android-layout


【解决方案1】:

您应该为查找大小添加侦听器

mGridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
  @Override
   public int getSpanSize(int position) {
    return //do your logic here
  }
});

如果要添加跨度计数

GridLayoutManager gridLayoutManager = new GridLayoutManager(this, //count);

【讨论】:

  • 您好,是否可以更改 row 跨度?使用这种逻辑,我只能更改 col 跨度。元素的高度应该不同。
  • 您要更改项目的宽度或高度吗?
  • 高度,例如(Item A height -> X, Item B height X/3)
猜你喜欢
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 2017-06-16
相关资源
最近更新 更多