RecyclerView--更强大的滚动控件2

        前面我们学习了RecyclerView的基本用法,现在来学习一下它附带的另外一种内置的布局排列方式:StaggeredGridLayoutManager可以实现瀑布流布局。首先在RecyclerViewTest2的基础上,修改player_item.xml如下:

RecyclerView--更强大的滚动控件2_第1张图片


这里做了几个调整,首相把LinearLayout的宽度有100dp改成match_parent,因为瀑布流布局的效果宽度应该根据布局的列数来自动分配,而不是固定的值。另外我们使用了layout_margin="5dp" 来让子项的之间有一点间距。接下来就是修改一下MainActivity中的代码:

RecyclerView--更强大的滚动控件2_第2张图片


这里的蓝色代码和行,代表我们创建了一个瀑布流布局的实例,3代表把布局分成3列,后面的参数用来指定布局的排列方向,表示纵向排列。


RecyclerView--更强大的滚动控件2_第3张图片


RecyclerView--更强大的滚动控件2_第4张图片


这里,我们首先定义了一个方法,通过Random来获取1~20个随机数,然后将参数中传入的值重复随机随机数的变数,最后形成瀑布流的效果。运行结果如下:


RecyclerView--更强大的滚动控件2_第5张图片




到此,我们实现了RecyclerView的两种布局方式,接下来我们来响应点击事件。我们需要自己给子项具体的View去注册点击事件。在ListView中,我们可以通过setOnItemClickListener去注册监听方法,但是当我们要想点击子项里面具体的某一项时,这个方法就不管用了,所以我们给子项具体的View去注册点击事件更好一些。接下来修改PlayerAdapter中的代码,如下:

RecyclerView--更强大的滚动控件2_第6张图片



RecyclerView--更强大的滚动控件2_第7张图片



首先在ViewHolder中添加了playerView变量来保存子项最外层布局的实例,然后在onCreateViewHolder()方法中注册点击事件就可以了。我们在两个点击事件中先获取了用户点击的position,然后通过position拿到响应的player实例,最后使用Toast分别弹出两种不同的内容以示区别。运行程序,结果如下:

RecyclerView--更强大的滚动控件2_第8张图片



这回,我们点击某个事件,就在屏幕上弹出了提示,响应了我们点击的事件。






























































你可能感兴趣的:(android入门)