Articles of android recyclerview

RecyclerView – 获取所有现有视图/查看者

我想在显示数据时更新RecyclerView ,在我的情况下,我会显示带或不带标签的图像。 默认情况下,我在创建视图持有者时设置了标签的可见性,这很好,但我希望用户在显示RecyclerView通过菜单更改标签可见性,因此我想手动更新所有现有视图的可见性RecyclerView 。 我能以某种方式获得所有现有的Views吗? 我需要所有,不仅仅是可见的,我不希望以后回收的View不会更新……

Viewpager没有显示在RecyclerView行内

我想制作一个“照片细节”活动或片段,我在其上方和下方显示照片aViewpPager,显示相关照片的评论和喜欢(2个标签)。 为了使屏幕’Scrollable’所以我可以向上/向下滚动评论和喜欢并向左/向右滑动我决定使用带有2行的RecyclerView: 行1:照片(ImageView)。 第2行:SlidingTabLayout + ViewPager + FragmentPagerAdapter。 代码编译并运行,显示图像和slidingTabLayout,但不显示ViewPager。 所以我的两个主要问题是: 1 – 我的实施有什么问题。 2 – 对于我想要达到的目标,是否有替代或更好的解决方案? 注意:我不想使用带有header的listView。我想使用RecyclerView,因为它更容易在网络的顶部/底部添加元素。 PhotoDetailsActivity.java public class MainActivity extends ActionBarActivity { RecyclerView recyclerViewPhotoDetails; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.recyclerViewPhotoDetails = (RecyclerView) this.findViewById(R.id.recycler_view_photo_details); this.recyclerViewPhotoDetails.setLayoutManager(new LinearLayoutManager(this)); this.recyclerViewPhotoDetails.setAdapter(new PhotoDetailsRecyclerAdapter(this.getSupportFragmentManager())); } } PhotosDetailsRecyclerAdapter.java public class PhotoDetailsRecyclerAdapter extends RecyclerView.Adapter { private static final int […]

如何将RecyclerView放在工具栏下方以及TabLayout和ViewPager之上还以自定义方式处理对滚动的响应?

我想创建一个如下图所示的布局: CoordinatorLayout包含: CollapsingToolbarLayout(包含ImageView和工具栏) RecyclerView TabLayout ViewPager(它的每个片段都包含一个RecyclerView) 我想以这种方式回应滚动事件: CollapsingToolbarLayout通过滚动展开和折叠 工具栏顶到顶部,直到TabLayout到达顶部 在该工具栏向上滚动并且TabLayout坚持到顶部 我在CollapsingToolbarLayout和TabLayout之间使用RecyclerView时遇到问题。 我可以在没有RecyclerView的情况下实现这种布局(我将CollapsingToolbarLayout和TabLayout放在AppBarLayout中,将ViewPager放在它外面,在CoordinatorLayout内)。 我的问题: 我应该把RecyclerView放在哪里? 我应该为每个布局设置layout_scrollFlags和layout_behavior哪个&哪里? 似乎AppBarLayout的高度有限。 当我将RecyclerView放在AppBarLayout中时,只有RecyclerView的一部分可见,并且TabLayout也会消失。 我阅读了很多像这样的教程和许多像这一个和这个的问题,但是没有它们对我有帮助。

嵌套的Recyclerview自行滚动

我有一个父回收站视图,里面有3个子视图。 孩子的最后两个是recyclerview。 Parent recyclerview – child view 1 – child view 2 (horizontal rv) – child view 3 (horizontal rv) 问题是每当这个片段可见时,它会自动滚动以与child view 2的底部对齐。 我已将父rv设置为侦听滚动。 这就是我最终的结果: dy: 108 dy: 72 dy: 75 dy: 62 dy: 48 dy: 42 dy: 34 dy: 27 dy: 22 dy: 16 dy: 12 dy: 10 dy: 7 dy: 5 dy: 3 […]

具有不同单元格宽度的RecyclerView Grid的LayoutManager

StaggeredGridLayoutManager似乎不允许自定义单元格宽度或跨越多个列(垂直方向除外)以进行垂直方向。 如上所示,用于组织单元格的首选LayoutManager是什么? PS我只是想知道如何使用StaggeredGridLayoutManager自定义单元格宽度而不是高度。 我知道高度可以按照此示例中的实现进行定制。 public class VerticalStaggeredGridFragment extends RecyclerFragment { public static VerticalStaggeredGridFragment newInstance() { VerticalStaggeredGridFragment fragment = new VerticalStaggeredGridFragment(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } @Override protected RecyclerView.LayoutManager getLayoutManager() { return new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); } @Override protected RecyclerView.ItemDecoration getItemDecoration() { return new InsetDecoration(getActivity()); } @Override protected int getDefaultItemCount() { return 100; […]

如何为回收器视图的布局管理器的更改设置animation

我正在使用带有2个不同布局布局管理器的循环器视图,即LinearLayoutManager和GridLayoutManager。 我想在从一个布局管理器切换到另一个管理器时为项目设置animation。 有没有办法达到这个效果? 我脑子里popup的接近方法是覆盖setLayoutManger方法并使用fromLayoutManager捕获项目的BEFORE状态,并使用toLayoutManager计算项目的AFTER状态,并将这些项目设置到位。 我没有深入研究这些代码,所以任何人都可以告诉我这种方法是可以实现的,还是有更好的方法来实现这一目标?

在您向上滑动时向上滑动RecyclerView,或在向下滑动时向下滑动Recyclerview

我想创建一个带有RecyclerView的Fragment ,它可以向上滑动并在向上滑动时显示更多项目。 这是我正在谈论的一个例子。 初始创作: 用户滑动向上滑动RecyclerView ,显示更多项目: 有一些问题,我想不使用CoordinatorLayout ,我想将它设置为RecyclerView中的项目直接叠加在EditText之上。 这是我使用的布局代码: 我得到这样的东西: 这绝对不可扩展,需要持续测量空视图。

为什么使用CardView而不是RelativeLayout或LinearLayout?

我有一个RecyclerView用于显示项目列表。 Android有一个Android的CardView类来显示卡片布局。 如果我使用RelativeLayout并将其背景设置为白色,则它的工作方式相同。 同样在CardView的情况下,我必须添加一个childlayout,它基本上包含卡内的所有视图。 所以我想知道它们是否有利于使用CardView(实际上增加了视图的层次结构)而不是直接使用普通的布局。

RecyclerView:Animate项目resize

我有一个RecyclerView 。 回收者视图的每个项目都可以扩展或不扩展。 只能同时扩展一个项目。 本质上,我正在尝试在lolipop dialier中重新创建历史列表。 我发现在RecyclerView上使用LayoutTransition 使它崩溃 。 但我无法正确设置两个状态之间项目视图更改的animation。 我尝试了getItemAnimator().setSupportsChangeAnimations(true)和notifyItemChanged(getPosition())但有两个问题: 视图被重新创建,使得过渡非常奇怪,因为它在项目移动的同时在下一个项目上方淡入。 出现的新视图不是resize,它已经是完整大小。 当视图重新创建时,旧视图淡出而新视图淡入,这使视图背景颜色闪烁。 我还尝试在animation持续时间LayoutTransition项目视图上设置LayoutTransition ,但这种方法的问题是RecycleView的布局立即更新而不跟随animation。 我为这两个尝试创建了一个关于这个问题的小型演示项目。 项目来源在这里 。 如何在项目布局更改中创建平滑过渡?

如何使用StaggeredLayoutManager实现无限滚动

我已经尝试为LinearLayoutManager实现无限滚动并且它成功并尝试将LinearLayoutManager实现复制到StaggeredGridLayoutManager但它不起作用。 我只想获得firstVisibleItem。 在LinearLayoutManager中: int firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition(int); 但在StaggeredGridLayoutManager中是: int firstVisibleItem = staggeredGridLayoutManager.findFirstVisibleItemPositions(int[]) 如何使用(int)not(int [])获取firstVisibleItem? 对此有什么好的方法/实施吗? 提前致谢。