RecyclerView的基本使用操作

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!

猜你喜欢

转载自blog.csdn.net/StringBoot/article/details/81905039
今日推荐