基於RecyclerView的瀑布流實現

2022-03-23 10:22:57 字數 2811 閱讀 8966

fragment的布局:

xmlns:tools=""  

android:layout_width="match_parent"  

android:layout_height="match_parent"  

tools:context=".fragment.vodlistfragment">  

android:id="@+id/id_recyclerview"  

android:divider="@color/colorwhite"  

android:dividerheight="0dp"  

android:layout_width="match_parent"  

android:layout_height="match_parent">android.support.v7.widget.recyclerview>  

framelayout>  

item的布局

<?xml version="1.0" encoding="utf-8"?>  

name="vodvideo"  

type="com.xiangbita.dqk.dqkand.model.vodvideo"/>  

name="handler"  

type="com.xiangbita.dqk.dqkand.fragment.vodlistfragment"/>  

data>  

xmlns:android=""  

android:layout_width="match_parent"  

android:id="@+id/cardview"  

android:onclick="@"  

android:layout_height="wrap_content">  

android:orientation="vertical"  

android:layout_width="match_parent"  

android:layout_height="wrap_content">  

android:layout_width="match_parent"  

android:layout_height="wrap_content"  

android:scaletype="fitcenter"  

android:layout_width="match_parent"  

android:layout_height="wrap_content"  

android:text="title"/>  

linearlayout>  

android.support.v7.widget.cardview>  

layout>  

fragment中對recyclerview的初始化:

view view  =inflater.inflate(r.layout.fragment_vod_list, container, false);  

mrecyclerview = (recyclerview) view.findviewbyid(r.id.id_recyclerview);  

mspan_count=2;  

staggeredgridlayoutmanager layoutmanager = new staggeredgridlayoutmanager(mspan_count,staggeredgridlayoutmanager.vertical);  

layoutmanager.setgapstrategy(staggeredgridlayoutmanager.gap_handling_none);  

mrecyclerview.setlayoutmanager(layoutmanager);  

mvodadapter = new vodadapter();  

mrecyclerview.setadapter(mvodadapter);  

spacesitemdecoration decoration=new spacesitemdecoration(2);  

mrecyclerview.additemdecoration(decoration);  

mrecyclerview.setitemanimator(new defaultitemanimator());  

videolist = new arraylist<>();  

上面**中用到的內部類vodadapter:

class vodadapter extends recyclerview.adapter  

@override  

public void onbindviewholder(voditemviewholder holder, int position)  

@override  

public int getitemcount()  

class voditemviewholder extends recyclerview.viewholder  

}  用到的內部類spaceitemdecoration:

public class spacesitemdecoration extends recyclerview.itemdecoration   

@override  

public void getitemoffsets(rect outrect, view view, recyclerview parent, recyclerview.state state)   

}  }  

做個簡單的說明,如果不加這個spaceitemdecoration會導致資料第一次載入時的item布局異常。

RecyclerView的簡單使用

recyclerview 和 listview 一樣都是通過維護少量的view來展示大量的資料,不同的是recyclerview提供了一種插拔式的體驗,高度解耦,同時使用起來更加靈活。recyclerview可以通過設定layoutmanager oritation itemanimation it...

關於RecyclerView的Adapter封裝

專案開發中會涉及到很多列表的頁面。如果每個頁面都寫乙個adapter,我們估計會瘋掉。我現在的目的就是在保證質量的同時要寫更少的 所以,封裝唄。recyclerview有自己的adapter和檢視管理。我們只需要把例項化時要傳入的引數泛型抽象,對不同的view實現不同的獲取與設定內容的方法即可。ad...

RecyclerView 的使用流程

一 加入依賴 使用 as 自帶的依賴管理工具加入recyclerview的依賴,注意和和編譯版本號一致 二 在布局檔案中加入 recyclerview控制項 android id id main recylist android layout width wrap content android l...