Android开发学习教程(19)- Android RecyclerView列表用法

220 阅读2分钟

—— 放弃不难,但坚持一定很酷。

RecyclerView是什么

RecyclerView是一个和ListView一样用来显示大量数据列表但是比ListView更高效的列表控件。关于ListView的学习请见上一篇文章。

RecyclerView有什么用

RecyclerView用来更高效的展示大量数据列表。

RecyclerView怎么用

  1. 导入依赖包
1implementation ``'androidx.recyclerview:recyclerview:1.1.0'
  1. 布局中加入RecyclerView控件
1234<``androidx.recyclerview.widget.RecyclerView``    ``android:id``=``"@+id/recyclerview"``    ``android:layout_width``=``"match_parent"``    ``android:layout_height``=``"match_parent" />
  1. 实例化RecycleView并设置布局方式
1234RecyclerView recyclerView = findViewById(R.id.recyclerview);``LinearLayoutManager layoutManager = ``new LinearLayoutManager(``this``);``layoutManager.setOrientation(LinearLayoutManager.VERTICAL);``recyclerView.setLayoutManager(layoutManager);

其中LinearLayoutManager就是类似ListView的功能,列表上下滚动(LinearLayoutManager.VERTICAL)或者左右滚动(LinearLayoutManager.VERTICAL)。除了可以设置为LinearLayoutManager还可以设置GridLayoutManager、StaggeredGridLayoutMnager,GridLayoutManager是网格摆放,而StaggeredGridLayoutMnager则是瀑布流摆放。

  1. 获取数据,定义自己的数据适配器并设置到RecyclerView上

自定义BaseAdapter可以展示任意类型的数据列表项,其实上面SimpleAdapter和ArrayAdapter都是继承自BaseAdapter,区别在于getView方法,SimpleAdapter和ArrayAdapter的getView读者可以自行查看源码,基本和上面截取的一小段差不多。我们来看自定义BaseAdapter的用法:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546    ``// 获取数据,这里模拟获取到了20条数据``    ``stringList = ``new ArrayList<>();``    ``for (``int i = ``0``; i < ``20``; i++) {``        ``stringList.add(``"Item" + i);``    ``}``    ``recyclerView.setAdapter(``new MyAdapter());``    ``// 定义自己的数据适配器``    ``class MyAdapter ``extends RecyclerView.Adapter<myadapter.myviewholder> {``        ``@NonNull``        ``@Override``        ``public MyAdapter.MyViewHolder onCreateViewHolder(``@NonNull ViewGroup parent, ``int viewType) {``            ``View itemView = LayoutInflater.from(MainActivity.``this``).inflate(R.layout.item_recyclerview, parent, ``false``);``            ``return new MyViewHolder(itemView);``        ``}``        ``@Override``        ``public void onBindViewHolder(``@NonNull MyAdapter.MyViewHolder holder, ``int position) {``            ``holder.tvName.setText(stringList.get(position));``        ``}``        ``@Override``        ``public int getItemCount() {``            ``return stringList == ``null ? ``0 : stringList.size();``        ``}``    ``// 定义缓存ViewHolder``        ``class MyViewHolder ``extends RecyclerView.ViewHolder {``            ``public TextView tvName;``            ``public MyViewHolder(View itemView) {``                ``super``(itemView);``                ``tvName = itemView.findViewById(R.id.tv_name);``                ``tvName.setOnClickListener(``new View.OnClickListener() {``                    ``@Override``                    ``public void onClick(View v) {``                        ``Toast.makeText(MainActivity.``this``, tvName.getText(), Toast.LENGTH_SHORT).show();``                    ``}``                ``});``            ``}``        ``}``    ``}``</myadapter.myviewholder>

运行效果:

Android开发学习教程(19)- Android RecyclerView列表用法