- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我基本上是在尝试实现这个设计原则(from Google's Material Design): 因此,我创建了一个带有 LinearLayoutManager
的父级 RecyclerView
,然后在 RecyclerView
适配器中,我将子级 RecyclerView
和用于“富媒体”部分(操作区域 2)的 GridLayoutManager
。一切正常,除了我将内部 RecyclerView
网格设置为具有 match_parent
宽度和 wrap_content
高度,但它不会正确计算内容的大小,似乎将其保留为 0 并因此隐藏。如果我将子 RecyclerView
设置为特定高度,项目会显示在其中,但当然会在底部被切断。其他人似乎也遇到过这个问题,but in their case, both have linear layouts。 (另见 "Khay's" answer here 。)
现在我的问题是,如何像“pptang”在上面链接问题的接受答案中所做的那样覆盖 onMeasure
方法,而是在自定义 GridLayoutManager
中自定义 LinearLayoutManager
?我没有在这里发布我的代码,因为它本质上与链接的代码相同,只是我需要为子 RecyclerView
创建一个自定义的 GridLayoutManager
,这样它正确测量为“pptang 的”回答状态。
否则,有没有比在第二个 RecyclerView 中使用 1 个 RecyclerView 更好的方法?只能使用 1 个 RecyclerView 填充一个 Activity/fragment ,同时使用上述 CardViews
列表和每个 CardView
中的唯一项目网格?
最佳答案
您可以使用库 SectionedRecyclerViewAdapter 仅使用一个 RecyclerView 来构建它.
您可以找到下图示例的完整代码 here .
首先创建一个Section类:
class MySection extends StatelessSection {
String title;
String subtitle;
List<String> list;
public MySection(String title, String subtitle, List<String> list) {
// call constructor with layout resources for this Section header, footer and items
super(R.layout.section_header, R.layout.section_item);
this.title = title;
this.subtitle = subtitle;
this.list = list;
}
@Override
public int getContentItemsTotal() {
return list.size(); // number of items of this section
}
@Override
public RecyclerView.ViewHolder getItemViewHolder(View view) {
// return a custom instance of ViewHolder for the items of this section
return new MyItemViewHolder(view);
}
@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
MyItemViewHolder itemHolder = (MyItemViewHolder) holder;
// bind your view here
itemHolder.tvItem.setText(list.get(position));
}
@Override
public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
return new SimpleHeaderViewHolder(view);
}
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder;
// bind your header view here
headerHolder.tvTitle.setText(title);
headerHolder.tvSubTitle.setText(subtitle);
}
}
然后您使用您的 Sections 设置 RecyclerView:
// Create an instance of SectionedRecyclerViewAdapter
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();
// Create your sections with the list of data for each year
MySection section1 = new MySection("Title", "Subhead", firstDataList);
// Add your Sections to the adapter
sectionAdapter.addSection(section1);
// Set up your RecyclerView with the SectionedRecyclerViewAdapter
GridLayoutManager glm = new GridLayoutManager(getContext(), 2);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(sectionAdapter.getSectionItemViewType(position)) {
case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER:
return 2;
default:
return 1;
}
}
});
recyclerView.setLayoutManager(glm);
recyclerView.setAdapter(sectionAdapter);
关于android - RecyclerView with GridLayoutManager in RecyclerView with LinearLayoutManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394213/
我正在使用 Recyclerview 和网格布局管理器在 android 中实现仪表板,其中连续 3 个项目。我将从服务器获取仪表板项目。根据项目的数量,我需要将Recyclerview项目调整到中心
我想知道是否有办法可以在android中自定义gridlayoutmanager以具有像这样的草图的水平布局: 我尝试了在 Github 中找到的一些布局管理器,但没有一个可以帮助我实现这种布局管理器
所以我使用 RecyclerView 和 GridLayoutManager 项目之间的间距在项目周围不一致 这是它在 4 x 4 网格中的样子 这是它在 5 x 5 网格中的样子 我已经尝试了很多来
我有一个 list ,假设有 20 个项目。我希望能够像这样加载它们 1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 我正在使用 Recycler
我在使用 GridLayoutManager 填充回收器 View 时遇到问题。 我需要完成第一行,完成后,转到第二行。我做了一个重新排序列表的算法,所以它被正确显示,我可以在不做任何映射取消映射的情
我正在尝试使用 GridLayoutManager 在 RecyclerView 中添加自定义分隔线但没有成功,我已经搜索了很多并查看了下面提到的答案但它没有帮助我 link 1 link 2 lin
我在我的 RecyclerView 中使用 GridLayoutManager(GLM)。在 RecyclerView 中,我将填充 CardViews,如何设置我的 GLM 以仅呈现一个 CardV
我想在使用 RecyclerView 时在 GridLayoutManager 的一行中显示可变数量的列。要显示的列数取决于列的 TextView 的大小。 我不知道列宽,因为文本是动态放入其中的。
我正在试验 RecyclerView 和 GridLayoutManager。 我最终想要显示与这样显示相同大小的图像,如果可能的话甚至是正方形: GridLayoutManager 的元素是什么使这
我正在尝试使用 GridLayoutManager 构建一个 RecyclerView,它的每行列数可变,如下所示: 同一行中所有项目的宽度之和始终是屏幕宽度。 我尝试重新组织项目列表,按行列表对它们
我有一个带有显示卡片 View 的 GridLayoutManager 的 RecyclerView。我希望卡片根据屏幕大小重新排列(Google Play 应用程序使用它的应用程序卡片做这种事情)。
我有 3 个 Activity :A --> B --> C 在 Activity B 中,我使用 RecyclerView 的 GridlayoutManager 进行填充。我想在导航到 Activ
只是试图将我的 RecyclerView 水平居中。 这是xml: 这里是java代码: mRecyclerView = findViewById(R.id.recycler_view
在 GridLayoutManager 中将跨度大小设置为 1当LoadState是 Loading在分页库中。 我试过this解决方案,但它不起作用。 对于复制问题:克隆 this官方 repo 和
我需要具有水平滚动行为的 RecyclerView Gridlayout 管理器。它必须像垂直方向一样添加 subview (例如(第 1 行,第 1 列)= 索引 0,(第 1 行,第 2 列)=
我用了GridLayoutManager作为我的回收站 View 的布局管理器。 mRecyclerView.setLayoutManager(new GridLayoutManager(getC
我想在 RecyclerView 中创建类似的东西: 但是,我得到了这个: 有没有办法用 RecyclerView 实现这一点? 最佳答案 尝试并检查更换线路 postLine.setLayoutMa
我有 layoutManager = GridLayoutManager(context, 3) 如何使每条奇数线方向从左到右和偶数线 - 从右到左 看起来像: 0 -> 1 -> 2 5 7 ->
我有一个用 RecyclerView 填满屏幕的 fragment ( android:support:v7.widget.RecyclerView ) 和一个 GridLayoutManager .
我正在使用 GridLayoutManager,因此动态设置 recyclerview 的列数(每行)。这是我的代码: GridLayoutManager gridLayoutManager = ne
我是一名优秀的程序员,十分优秀!