pab*_*upi 1 android adapter android-recyclerview
我RecyclerView在我的项目上创建了一个横向.我希望水平行具有不同的大小和多个垂直列,每个行包含不同数量的行,如下图所示:

水平行的数量是可变的.第一列可以有四行,第二列可以有三行,四列......列数也是可变的.
结果就像一个电视指南,列是通道和行排放.这不是电视xD的指南
我用这种方式完成了水平行:
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);
public class SimpleAdapter extends RecyclerView.Adapter<SimpleAdapter.VerticalItemHolder>{
@Override
public void onBindViewHolder(VerticalItemHolder itemHolder, int position) {
Item item = arrayItems.get(position);
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, item.getSizeRow(), root.getResources().getDisplayMetrics());
ViewGroup.LayoutParams params = root.getLayoutParams();
if (params == null) {
params = new ViewGroup.LayoutParams(heigth, width);
} else {
params.width = width;
params.height = heigth;
}
root.setLayoutParams(params);
}
Run Code Online (Sandbox Code Playgroud)
结果如下图所示:

但是我无法在垂直列中显示某些项目.怎么做?谢谢
从回答这里使用Variable span size的RecyclerView
使用GridLayoutManager而不是LinearLayoutManager如下:
GridLayoutManager manager = new GridLayoutManager(this, 3);
manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return (3 - position % 3);
}
});
recyclerView.setLayoutManager(manager);
Run Code Online (Sandbox Code Playgroud)
在这里,我必须解释一些事情.见下图 -

在上面的代码中,跨度大小为3.这意味着任何行中所需的最大列数为3.
在上面的代码中,该方法getSpanSize返回的跨度大小position.
以上代码的跨度大小:
如果您理解这一点,它可能对您有所帮助.
| 归档时间: |
|
| 查看次数: |
5503 次 |
| 最近记录: |