RecycleView系列之(一)— 简单使用

参考文章

https://www.jianshu.com/p/f0b28e26ff0e

最近在公司做的主要项目都是对外 SDK 的开发,对界面的开发做得算是比较的少了。为了不对界面生疏,有时候也还会重新看看界面的一些实现方式。
Android开发中UI界面离不开列表。从早期的ListView,到现在常用的RecyclerView。都是实现里表的控件。现在ListView应该算是用得比较少了,就重要来回顾一下RecyclerView怎么使用。

依赖RecyclerView库

    implementation 'androidx.recyclerview:recyclerview:1.1.0-beta05'

编写 Adapter

简单的例子就在 Adapter 中创建内部类 ViewHolder。内容比较简单,直接看Adapter代码吧。

public class RecyclerTestAdapter extends RecyclerView.Adapter {

    private List data;

    public void setData(List data) {
        this.data = data;
    }

    @NonNull
    @Override
    public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item_rv, parent,false);

        return new VH(view);
    }

    @Override
    public void onBindViewHolder(@NonNull VH holder, int position) {

        holder.mTvItem.setText(data.get(position));

    }

    @Override
    public int getItemCount() {
        return data != null ? data.size() : 0;
    }

    class VH extends RecyclerView.ViewHolder{

        public TextView mTvItem;

        public VH(@NonNull View itemView) {
            super(itemView);
            mTvItem = itemView.findViewById(R.id.tv_item);
        }
    }

}

在创建自定义的Adapter的时候,主要需要复写 onCreateViewHolder 、 onBindViewHolder 、 getItemCount 。

调用

最后编写好 Adapter 之后,就是使用了。RecyclerView和ListView的使用还是不一样的,老样子程序员直接看代码。

        LinearLayoutManager layoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
        recyclerView.setLayoutManager(layoutManager);

        RecyclerTestAdapter recyclerTestAdapter = new RecyclerTestAdapter();
        recyclerView.setAdapter(recyclerTestAdapter);

        ArrayList datas = new ArrayList<>();

        for (int i = 0; i < 20; i++) {
            datas.add("第" + i);
        }

        recyclerTestAdapter.setData(datas);
        recyclerTestAdapter.notifyDataSetChanged();

RecyclerView 相对 ListView 来说多出了一个 LayoutManager 。一个布局管理器,这个就是决定了列表的布局样式。
LinearLayoutManager : 线性布局管理器,和之前的 ListView 样式类似。为什么说类似,因为LinearLayoutmanager能实现的功能比ListView 要多,但是他们都是线性之类的样式。
GridLayouManager : 网格布局,其实LinearLayoutManager 配置好之后也可以实现网格布局的样式。
StaggeredGridLayoutManager : 分散式列表布局, 通俗来说就是可以实现瀑布流,可以实现item的不同高度的网格样式。
LayoutMananger 后续在整理文章总结一下,这里就不展开了。

总结

简单的看,其实RecyclerView 需要写的代码还是很多的。不慌,Google之所以出RecyclerView就是打造一个可以高度定制话的滚动控件。早期要是在使用ListView 的时候确实发现实现很多效果,是相当麻烦的。在项目中我们是需要对RecyclerView进行封装的。

你可能感兴趣的:(RecycleView系列之(一)— 简单使用)