Android开发学习教程(19)- Android RecyclerView列表用法
—— 放弃不难,但坚持一定很酷。
RecyclerView是什么
RecyclerView是一个和ListView一样用来显示大量数据列表但是比ListView更高效的列表控件。关于ListView的学习请见上一篇文章。
RecyclerView有什么用
RecyclerView用来更高效的展示大量数据列表。
RecyclerView怎么用
1. 导入依赖包
implementation 'androidx.recyclerview:recyclerview:1.1.0'
2. 布局中加入RecyclerView控件
<androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" />
3. 实例化RecycleView并设置布局方式
RecyclerView 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则是瀑布流摆放。
4. 获取数据,定义自己的数据适配器并设置到RecyclerView上
自定义BaseAdapter可以展示任意类型的数据列表项,其实上面SimpleAdapter和ArrayAdapter都是继承自BaseAdapter,区别在于getView方法,SimpleAdapter和ArrayAdapter的getView读者可以自行查看源码,基本和上面截取的一小段差不多。我们来看自定义BaseAdapter的用法:
// 获取数据,这里模拟获取到了20条数据 stringList = new ArrayList<>(); for (int i = 0; i < 20; i++) { stringList.add("Item" + i); } recyclerView.setAdapter(new MyAdapter()); // 定义自己的数据适配器 class MyAdapter extends RecyclerView.Adapter{ @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(); } }); } } }
运行效果:
RecyclerView缓存机制
https://www.jianshu.com/p/3e9aa4bdaefd
https://blog.csdn.net/u013700502/article/details/105058771
本篇源码下载地址:https://pan.baidu.com/s/16HO-b7DBu1h4nh2HN9yd_g 提取码: helu
------转载请注明出处,感谢您对原创作者的支持------
有偿提供技术支持、Bug修复、项目外包、毕业设计、大小作业
Android学习小站
Q Q:1095817610
微信:jx-helu
邮箱:1095817610@qq.com
添加请备注"Android学习小站"
