首先 看一下 运行效果
首先看一下 布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:src="@drawable/ren"
android:id="@+id/item_iv_icon"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/list_tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"/>
</LinearLayout>
看一下 主要代码:
private void loadstggeredData(boolean inversion, boolean orinetion) {
ArrayList<DataBean> datas = new ArrayList<>();
//给bean类放数据,最好把装好数据的bean类放到集合里
for(int i=0;i<pic.length;i++) {
DataBean dataBean = new DataBean();
dataBean.icon =pic[i];
dataBean.name = "Picture" + i;
//bean类放入集合里
datas.add(dataBean);
}
//创建适配器adapter 对象 参数一般为两个 ,上下文数据加载集合
RecycleViewStaggeredGridAdapter adapter = new RecycleViewStaggeredGridAdapter(datas,this);
//设置适配器
recyclerView.setAdapter(adapter);
//布局管理器所需要的的参数 参数 1.规定显示几列, 2.指定item的排列方向
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, orinetion ? StaggeredGridLayoutManager.VERTICAL : StaggeredGridLayoutManager.HORIZONTAL);
manager.setReverseLayout(inversion);
recyclerView.setLayoutManager(manager);
}
在看一下适配器:
public class RecycleViewStaggeredGridAdapter extends RecyclerView.Adapter<RecycleViewStaggeredGridAdapter.StaggeredgridHolder> {
private List<DataBean> dataBeen;
private Context context;
public RecycleViewStaggeredGridAdapter(List<DataBean> dataBeen, Context context) {
this.dataBeen = dataBeen;
this.context = context;
}
@Override
public StaggeredgridHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//转换一个view布局对象,决定了item的样子 参数:1 上下文 2 xml布局文件
View itemview = View.inflate(context, R.layout.item_staggeredgrid, null);
//创建一个viewHolder对象
StaggeredgridHolder staggeredgridHolder = new StaggeredgridHolder(itemview);
// ListViewHolder listViewHolder = new ListViewHolder(itemview);
//把viewHolder对象传递出去
return staggeredgridHolder;
}
@Override
public void onBindViewHolder(StaggeredgridHolder holder, int position) {
DataBean dataBean = dataBeen.get(position);
holder.setData(dataBean);
}
@Override
public int getItemCount() {
if (dataBeen != null && dataBeen.size() > 0) {
return dataBeen.size();
}
return 0;
}
public class StaggeredgridHolder extends RecyclerView.ViewHolder {
private final ImageView imgView;
private final TextView textView;
public StaggeredgridHolder(View itemView) {
super(itemView);
imgView = (ImageView) itemView.findViewById(R.id.item_iv_icon);
textView =(TextView) itemView.findViewById(R.id.list_tv_name);
}
public void setData(DataBean data) {
imgView.setImageResource(data.icon);
textView.setText(data.name);
}
}
}