day01_Recyclerview

本文介绍了RecyclerView的三种效果:线性、网格和瀑布流,并对比ListView阐述了RecyclerView的优势,如支持多布局和动态插拔功能。详细讲解了RecyclerView的重要方法,包括设置横向滑动、数据更新动画、多布局展示等。同时,提到了常见的布局管理器如LinearLayoutManager、GridLayoutManager和StaggeredGridLayoutManager,以及如何添加分割线和动画。最后,提到了依赖库的导入和一个案例应用。
摘要由CSDN通过智能技术生成

Recyclerview

3种效果:
线性/网格/瀑布流

Recyclerview
RecyclerView比ListView的优势:
1.RecyclerView比listview实现效果更多
2.RecycelrView支持多布局;
3.RecyclerView根据项目需要插拔功能
RecyclerView默认不支持点击事件->程序员代码中通过回调接口的方式添加监听

重要的方法

1.RecyclerView横向滑动:
LinearLayoutManager.HORIZONTAL横向滑动LinearLayoutManager.VERTICAL垂直滑动

2.RecyclerView.Adapter中刷新方法区别:
notifyDataSetChanged();整体刷新+没有动画效果
notifyItemInserted(int position,Object data):有动画效果+添加一条数据在position位置
notifyItemRemoved(position);有动画效果+删除一条数据并刷新
注意:当添加和删除的时候,要更新下标,不然有错位现象
3.RecyclerView多布局展示:
public int getItemViewType(int position)返回当前数据的itemview类型
4.RecyclerView常见方法:
LinearLayoutManager:recyclerview线性管理器(垂直水平方向);
GridLayoutManager:网格布局管理器;
StaggeredGridLayoutManager:瀑布流布局管理器;
RecyclerView.setLayoutManager(LayoutManager manager):添加布局管理器
RecyclerView.addItemDecoration(ItemDecoration decoration):添加分割线
RecyclerView.setItemAnimator(ItemAnimator animator):添加动画方法
RecyclerView.setAdapter(Adapter adapter):添加适配器

导入依赖
implementation ‘com.android.support:recyclerview-v7:28.0.0’

在这里插入图片描述
在这里插入图片描述
案例快手

//主类
public class MainActivity extends AppCompatActivity {
    RecyclerView recyclerView;
    ArrayList<Bean.DataBean> list=new ArrayList<>();
    MainAdapter adapter;

    @SuppressLint("HandlerLeak")
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what==101){
                String s=(String)msg.obj;
                Gson gson=new Gson
要使用 RecyclerView 来制作一个日历,首先需要了解 RecyclerView 的基本使用方法。 RecyclerView 是一个强大的 Android UI 组件,用于在列表和网格视图中显示大量数据。它使用 ViewHolder 模式来重用视图以提高性能,并支持大量的自定义选项。 下面是基本的 RecyclerView 使用方法: 1. 在布局文件中添加 RecyclerView 组件: ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 创建 RecyclerView.Adapter 子类来管理数据,并实现 onCreateViewHolder、onBindViewHolder 和 getItemCount 方法: ``` class MyAdapter(private val myDataset: Array<String>) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() { class MyViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyAdapter.MyViewHolder { val textView = LayoutInflater.from(parent.context) .inflate(R.layout.my_text_view, parent, false) as TextView return MyViewHolder(textView) } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { holder.textView.text = myDataset[position] } override fun getItemCount() = myDataset.size } ``` 3. 在 RecyclerView 中设置 LayoutManager 和 Adapter: ``` val recyclerView = findViewById<RecyclerView>(R.id.recycler_view) recyclerView.layoutManager = LinearLayoutManager(this) val myDataset = arrayOf("Item 1", "Item 2", "Item 3") recyclerView.adapter = MyAdapter(myDataset) ``` 接下来,我们可以使用 RecyclerView 来制作一个日历。下面是一个简单的示例: 1. 创建一个名为 DayAdapter 的 RecyclerView.Adapter 子类,用于管理日历中的日期。 ``` class DayAdapter(private val days: List<Day>) : RecyclerView.Adapter<DayAdapter.DayViewHolder>() { class DayViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DayViewHolder { val textView = LayoutInflater.from(parent.context) .inflate(R.layout.day_view, parent, false) as TextView return DayViewHolder(textView) } override fun onBindViewHolder(holder: DayViewHolder, position: Int) { val day = days[position] holder.textView.text = day.date.toString() holder.textView.setTextColor(if (day.isCurrentMonth) Color.BLACK else Color.GRAY) } override fun getItemCount() = days.size } ``` 2. 创建一个名为 Day 的数据类,表示日历中的日期。 ``` data class Day(val date: Int, val isCurrentMonth: Boolean) ``` 3. 在布局文件中添加 RecyclerView 组件。 ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 4. 在 Activity 中设置 RecyclerViewLayoutManager 和 Adapter。 ``` val recyclerView = findViewById<RecyclerView>(R.id.recycler_view) recyclerView.layoutManager = GridLayoutManager(this, 7) val days = getDays() recyclerView.adapter = DayAdapter(days) ``` 5. 创建一个名为 getDays 的函数,用于生成日历中的日期数据。 ``` private fun getDays(): List<Day> { val today = Calendar.getInstance() val firstDayOfMonth = Calendar.getInstance() firstDayOfMonth.set(Calendar.DAY_OF_MONTH, 1) val daysInMonth = firstDayOfMonth.getActualMaximum(Calendar.DAY_OF_MONTH) val firstDayOfWeek = firstDayOfMonth.get(Calendar.DAY_OF_WEEK) val days = mutableListOf<Day>() var date = 1 for (i in 1..42) { if (i < firstDayOfWeek || i >= firstDayOfWeek + daysInMonth) { days.add(Day(0, false)) } else { days.add(Day(date, true)) date++ } } return days } ``` 这个函数会返回一个包含日历中所有日期的列表,其中每个元素是一个 Day 对象。该函数使用 Calendar 类来计算当前月份的第一天和该月份有多少天,然后根据日历中的行和列填充日期。如果某个日期不属于当前月份,则其值为 0,isCurrentMonth 属性为 false。否则,isCurrentMonth 属性为 true。 最后,我们需要创建一个 day_view.xml 文件,用于定义每个日期的外观。该文件可以包含一个 TextView 组件,用于显示日期。例如: ``` <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/day_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:padding="8dp" /> ``` 这样,我们就可以使用 RecyclerView 来制作一个日历了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值