我要实现项目列表,如下所示。
如果包含5和6个项目,则该部分应如下所示滚动
我想实现这一点,作为我的应用程序中的一部分。在Android中实现此功能的正确方法是什么,我需要一个起点。回收者视图有可能吗?请共享任何库或github项目(如果可用)。
答案 0 :(得分:1)
是的,您可以使用StaggeredLayoutManager来实现,其中需要根据数据大小(如以下代码)设置跨度计数和方向:
enter code private void setSpanValue() {
StaggeredGridLayoutManager staggeredGridLayoutManager;
if (modelArrayList.size() == 1) {
staggeredGridLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
} else if (modelArrayList.size() == 2) {
staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
} else if (modelArrayList.size() == 3) {
staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
} else if (modelArrayList.size() == 4) {
staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
} else {
staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
}
recyclerView.setLayoutManager(staggeredGridLayoutManager);
recyclerView.hasFixedSize();
Adapter adapter = new Adapter(this, modelArrayList, checkEvenOrOdd(modelArrayList.size()));
recyclerView.setAdapter(adapter);
}
对于超过4个项目,您需要检查数据是偶数还是奇数,如以下代码所示:
private boolean checkEvenOrOdd(int n) {
if ((n % 2) == 0) {
// number is even
return true;
} else {
// number is odd
return false;
}
}
查看我的示例项目,它将解决您的问题 https://github.com/DanishAmjad12/HetrogenousLayout
答案 1 :(得分:0)
使用自定义布局管理是可能的。我们可以根据需要修改layout-manger。
我从vlayout git lib中使用过DelegateAdapter,它的确很棒。 检查下面的链接以获取更多详细信息。