RecyclerView的基本骚操作
RecyclerView这个控件很骚气的,它结合实现了ListView(线型布局(只能做垂直布局))、和GridView(网格布局)的功能特点,同时还添加了瀑布流布局,还优化了ListView的不足,添加了横向布局, 学起来一点也不难,好用又好学,Very Good,哈哈,当你学会使用它的时候什么ListView、GridView它都能做!666的,现在做android开发的不会RecyclerView的都不敢出门,噗。。。。 哈哈哈
看操作看操作......嘿嘿!
1.基本操作(使用前需要在app下的gradle中添加依赖):
implementation 'com.android.support:recyclerview-v7:26.1.0'
2.在需要使用的XML中添加以下RecyclerView布局代码:
<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler_view"> </android.support.v7.widget.RecyclerView>
3.然后在activity中获取RecyclerView,并设置LayoutManager(线型)以及adapter:
//1.获取RecyclerView实例 RecyclerView recyclerView=(RecyclerView)findViewById(R.id.recycler_view); //2.设置RecyclerView管理器,LinearLayoutManager:线型布局; //RecyclerView的管理器有三种:LinearLayoutManager(线型布局:线性布局可以设置垂直和水平) 、 // GridlayoutManager(网格布局)、 // StaggeredGridlayoutManager(瀑布流布局) LinearLayoutManager manager=new LinearLayoutManager(this); //管理器使用.setOrientation()方法来设置垂直水平方向(如果不设置则默认是垂直的); //manager.setOrientation(LinearLayoutManager.HORIZONTAL);//水平布局 //manager.setOrientation(LinearLayoutManager.VERTICAL);//垂直布局 recyclerView.setLayoutManager(manager);//设置RecyclerView布局 //3.设置Adapter适配器 FruitAdapter adapter=new FruitAdapter(this,mFruitList); recyclerView.setAdapter(adapter);
4设置网格布局和瀑布流布局:
//网格布局 //第一个参数是context上下文,第二个参数是列的个数,传3就是三列 GridLayoutManager gridLayoutManager=new GridLayoutManager(this,3); recyclerView.setLayoutManager(gridLayoutManager);//设置RecyclerView布局 //设置Adapter适配器 FruitAdapter adapter=new FruitAdapter(this,mFruitList); recyclerView.setAdapter(adapter);//瀑布流布局 //第一个参数是列的个数,第二个参数是布局的方向(水平、垂直) StaggeredGridLayoutManager staggeredGridLayoutManager= new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(staggeredGridLayoutManager);//设置RecyclerView布局 //设置Adapter适配器 FruitAdapter adapter=new FruitAdapter(this,mFruitList); recyclerView.setAdapter(adapter);
5.FruitAdapter适配器类:
public class FruitAdapter extends RecyclerView.Adapter <FruitAdapter.ViewHolder>{ private List<Image> mFruitList; private Context context; public FruitAdapter(Context context,List<Image> mFruitList){ this.context=context; this.mFruitList=mFruitList;//数据源 } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //加载item布局 创建ViewHolder的实例 View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_one,parent,false); ViewHolder holder=new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { //给item控件赋值 Image image=mFruitList.get(position); holder.imageView.setImageResource(image.getImageId()); holder.textView.setText(image.getText()); } /** * * @return:返回item项的个数 */ @Override public int getItemCount() { return mFruitList.size(); } /** * 持有者类 */ static class ViewHolder extends RecyclerView.ViewHolder { ImageView imageView; TextView textView; public ViewHolder(View itemView) { super(itemView); imageView=(ImageView)itemView.findViewById(R.id.imageView); textView=(TextView)itemView.findViewById(R.id.textView); } } }
ok,就是这么简单粗暴。。
我也是小白,对于RecyclerView的底层还是有待了解的,只是会用,嘿嘿,有什么错误的地方还请大佬指出,3Q!