接触了挺长时间的RecycleView了,也用RecycleView做过不少小东西了,但是每次用到它的时候还有些地方想不起来怎么写,然后去查书本、查博客,所以我觉得有必要为RecycleView写下点什么东西了。

首先对于RecycleView来说,如果想实现一些简单的功能,又对页面美观要求不高的话,只需知道几个点就够了

第一

这个类一般都作为超类被一个叫做某某Holder的类继承,这个类的作用主要用来对RecycleView里面的item进行初始化,定义控件、控件获取id都需要在这个类里面写。

这个类里面只写一个构造方法,构造方法里面首先调用父类的构造方法,然后写item里面的控件获取id。如下面的代码所示:

private class SoundHolder extends RecyclerView.ViewHolder{
    private Button mButton;
    public SoundHolder(LayoutInflater inflater,ViewGroup container){
        super(inflater.inflate(R.layout.list_item_sound,container,false));
        mButton=(Button)itemView.findViewById(R.id.list_item_sound_button);
    }
}


第二 适配器

第一次听这个名字的时候感觉好高大上啊,能叫某某器,适配器其实说白了就是一个类,只是因为它的功能较为强大所以称之为某某器,又因为它为RecycleView加载数据、适配item等,就给它起了一个名字,叫适配器。

适配器这个类是RecycleView.Adapter<某某Holder> ,这里的某某Holder也就是上面定义的那个类名。适配器类也被用作超类被一个叫某某Adapter的类继承,这个类里面要实现三个方法:

(1)onCreateViewHolder(View Group parent,int ViewType)

看名字想必也都猜出来了吧,在我的理解中,这个类主要用于创建RecycleView的item

(2)onBindViewHolder(SoundHolder holder, int position)

这个类主要用于绑定数据,在这个类中,将数据设置到item里面的控件上,使用Holder找到item,使用position找到数据位置。这个先说的抽象一点,看下面的代码就明白了。

(3)getItemCount()

这个类主要返回RecycleView中要添加的item数量。RecycleView添加多少个item都是这个方法说了算。

说了这么多,先看下代码:

private class SoundAdapter extends RecyclerView.Adapter<SoundHolder>{
    @Override
    public SoundHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater=LayoutInflater.from(getActivity());
        return new SoundHolder(inflater,parent);//返回一个item,SoundHolder就是我上面定义的一个class
    }

    @Override
    public void onBindViewHolder(SoundHolder holder, int position) {
        holder.mButton.setText(datas.get(position));//为Button绑定数据,datas是一个List容器
    }

    @Override
    public int getItemCount() {
        return datas.size();//返回要添加的item个数
    }
}

只要理解各个类、方法的作用,就不难理解RecycleView。

已经为RecycleView打好基础了。然后我们要获取一个RecycleView的控件了。

RecyclerView recyclerView=(RecyclerView)v.findViewById(R.id.fragment_recycle_view);

可以忽略v.,因为我是写在Fragment上面的,所以有V.,写在Activity中直接findViewBuId。

然后我们要为这个RecycleView设置布局方式:

mCrimeRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

这里我设置为比较简单的线性布局,关于其他布局我会后续增加。

最后我们为RecycleView设置一个适配器。

recyclerView.setAdapter(new SoundAdapter());

这样一个简单的RecycleView就完成了。