先看一下 运行效果
该篇文章 是基于上一篇 RecylerView之list显示 的基础上添加的 如想详细了解 请看上一篇
先看一下 MainActivity 中的代码
private void loadGridData(boolean invresion, boolean orinetion ) {
ArrayList<DataBean> datas = new ArrayList<>();
//给bean类放数据,最好把装好数据的bean类放到集合里
for(int i=0;i<35;i++){
DataBean dataBean=new DataBean();
dataBean.icon=R.drawable.ren;
dataBean.name="picture"+i;
//bean类放入集合里
datas.add(dataBean);
}
RecylerGridAdapter gridAdapter = new RecylerGridAdapter(datas,this);
recyclerView.setAdapter(gridAdapter);
//布局管理器,参数:上下文 规定显示几列
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
gridLayoutManager.setReverseLayout(invresion);
gridLayoutManager.setOrientation(orinetion ? LinearLayoutManager.VERTICAL : LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(gridLayoutManager);
}
在 onOptionsItemSelected()方法里添加:
if (itemId == R.id.action_grid){
//标准显示
loadGridData(false,true);
Toast.makeText(MainActivity.this,"你好",Toast.LENGTH_SHORT).show();
return true;
}//list垂直反向显示
else if (itemId == R.id.action_grid_vertical){
loadGridData(true,true);
}//水平显示
else if(itemId == R.id.action_grid_horiztal){
loadGridData(false,false);
}//水平反向显示
else if(itemId == R.id.action_grid_horiztalwest){
loadGridData(true,false);
}
其对应的自定义适配器:
public class RecylerGridAdapter extends RecyclerView.Adapter<RecylerGridAdapter.GridHolder> {
private List<DataBean> dataBeen;
private Context context;
public RecylerGridAdapter(List<DataBean> dataBeen, Context context) {
this.dataBeen = dataBeen;
this.context = context;
}
@Override
public GridHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//转换一个view布局对象,决定了item的样子 参数:1 上下文 2 xml布局文件
View itemview = View.inflate(context, R.layout.item_grid, null);
//创建一个viewHolder对象
GridHolder gridHolder = new GridHolder(itemview);
// ListViewHolder listViewHolder = new ListViewHolder(itemview);
//把viewHolder对象传递出去
return gridHolder;
}
@Override
public void onBindViewHolder(GridHolder 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 GridHolder extends RecyclerView.ViewHolder {
private final ImageView imgView;
private final TextView textView;
public GridHolder(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);
}
}
}
其对应的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center" android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/pic7"
android:id="@+id/item_iv_icon"
android:layout_width="75dp"
android:layout_height="75dp" />
<TextView
android:text="图片描述"
android:textSize="20sp"
android:textStyle="bold"
android:id="@+id/list_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>