第一步:
关联库文件:
第二步:布局.xml
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recyler_view">
</android.support.v7.widget.RecyclerView>
第三步:在主类中初始化控件
//查找我们的控件函数
private void initView() {
mRecyclerView = (RecyclerView) findViewById(R.id.recyler_view);
}
第四步:在主类中通过方法,添加一个menu菜单选项,效果如下:
方法:
//加载一个menu菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_menu,menu);
return true;
}
//菜单按钮点击事件处理函数
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId=item.getItemId();
//grideView显示
if (itemId==R.id.action_gride_normal){
//标准显示
loadgrideDate(false,true); //自定义的一个bean类
return true;
}// B 垂直反向显示
else if (itemId==R.id.action_gride_normal_reverse){
loadgrideDate(true,true);
}// C 水平标准显示
else if (itemId==R.id.action_gride_horizontal){
loadgrideDate(false,false);
}// D 水平反向显示
else if (itemId==R.id.action_gride_horizontal_reverse){
loadgrideDate(true,false);
}
return super.onOptionsItemSelected(item);
}
loadgrideDate函数:
// D RecyclerView实现GridView效果,实际上就是布局管理器参数改为GridViewManager
private void loadgrideDate(Boolean isversion,Boolean orientation) {
//创建一个集合,泛型是DetaBean
ArrayList<DateBean> dates=new ArrayList<>();
//给Bean类放数据,最后把装好数据的Bean类放到集合里面!!
for(int x=0; x< 35; x++){
//创建Bean类对象
DateBean dateBean=new DateBean(); //DateBean是一个Bean类!!
dateBean.icon=R.drawable.zx_img;
dateBean.name="wsw你好"+x;
//把Bean类放入集合
dates.add(dateBean);
}
//创建适配器对象 参数一般有两个,上下文和数据加载集合
RecyclerViewGridAdapter recyclerViewGridAdapter = new RecyclerViewGridAdapter(this, dates);
// 1 设置适配器
mRecyclerView.setAdapter(recyclerViewGridAdapter);
//布局管理器所需参数,上下文
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
//B 通过布局管理器,可以控制条目排列顺序 true:反向显示 false:正常显示(默认)
gridLayoutManager.setReverseLayout(isversion);
//C 设置RecyclerView显示的方向,是水平还是垂直!! GridLayoutManager.VERTICAL(默认) false
gridLayoutManager.setOrientation(orientation ? GridLayoutManager.VERTICAL: LinearLayoutManager.HORIZONTAL);
//设置布局管理器 , 参数 linearLayout
mRecyclerView.setLayoutManager(gridLayoutManager);
}
RecyclerViewGridAdapter是我们自定义的适配器类,就是为了展示listview效果
//提示 RecyclerViewGridViewAdapter和RecyclerViewListAdapter代码一样
//RecyclerView的适配器,主要是指定泛型, 一般我们就是类名的ViewHolder继承Viewholder (内部已经实现了复用机制)
public class RecyclerViewGridAdapter extends RecyclerView.Adapter<RecyclerViewGridAdapter.GridViewHolder>{
private Context mContext;
//泛型是RecylerView所需的Bean类
private List<DateBean> mDateBeen;
//构造方法,一般需要接受两个参数,上下文,集合对象(包含我们所需要的数据)
public RecyclerViewGridAdapter(Context context, ArrayList<DateBean> dates) {
mContext = context;
mDateBeen = dates;
}
//创建ViewHolder也就是说创建出来一条,并把ViewHolder(item)返回出去
@Override
public GridViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//转换一个View布局对象,决定了item的样子, 参数1:上下文 2. xml布局对象 3.为null
View view = View.inflate(mContext, R.layout.activity_gridview, null);
//创建一个ViewHolder对象
GridViewHolder gridViewHolder = new GridViewHolder(view);
//把ViewHolder对象传出去
return gridViewHolder;
}
@Override
public void onBindViewHolder(GridViewHolder holder, int position) {
//从集合里拿对应item的数据对象
DateBean dateBean = mDateBeen.get(position);
//给holder里面的控件对象设置数据
holder.setData(dateBean);
}
@Override
public int getItemCount() {
//数据不为null,有几条数据就显示几条数据
if (mDateBeen != null && mDateBeen.size() > 0) {
return mDateBeen.size();
}
return 0;
}
public class GridViewHolder extends RecyclerView.ViewHolder{
private final ImageView mIvIcon;
private final TextView mTvName;
public GridViewHolder(View itemView) {
super(itemView);
mIvIcon = (ImageView) itemView.findViewById(R.id.item_list_iv_icon);
mTvName = (TextView) itemView.findViewById(R.id.item_list_tv_icon);
}
public void setData(DateBean data) {
//给imageView设置图片
mIvIcon.setImageResource(data.icon);
//给TextView设置文本
mTvName.setText(data.name);
}
}
}
activity_gridview.xml代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_list_iv_icon"
android:src="@drawable/zx_img"/>
<TextView
android:id="@+id/item_list_tv_icon"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:textSize="20sp"
android:textStyle="bold"
android:text="图片描述"
/>
</LinearLayout>
效果展示: