为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
2021Android从零入门到实战(Kotlin版)_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

2021Android从零入门到实战(Kotlin版)

LovelyChubby 架构师
难度入门
时长13小时51分
  • 5分18秒,添加的fragment的id一定要和bottom_nav_manu表单中新添加的那个item的id一样啊!否则就无法跳转!(其实老师后面也强调了)


    另外,如果运行时发现界面头上有个白色的留白,可以查看activity_main表单文件,把开头几行中的“android:paddingTop="?attr/actionBarSize"”删掉,这是模板自带的一个留白配置,删掉后就不会有那块白色了。


    感谢DeepSeek帮忙排查问题,它是人类的好朋友~(ಥ _ ಥ)

    查看全部
  • 同上节课一样,由于kotlin-android-extensions 插件废弃,导致holder.itemView.item_image以及holder.itemView.item_title相关的代码全都失效,DeepSeek解释说:“holder.itemView.itemImage 是 kotlin-android-extensions 的语法糖,它本质上等价于 holder.itemView.findViewById<ImageView>(R.id.itemImage),但废弃插件后此功能已失效。直接通过 ID 访问视图的方式已被完全移除,必须显式绑定”。下面是它给出的代码。好耶!我好像明白view binding是怎么回事了!我可以举一反三啦!


    inner class MyAdapter : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {

        // 使用 View Binding 的 ViewHolder

        inner class MyViewHolder(private val binding: ItemViewLinearVerticalBinding) : 

            RecyclerView.ViewHolder(binding.root) {

            // 直接通过 binding 访问视图

            fun bind() {

                binding.itemImage.setImageResource(R.drawable.icon_jetpack)

                 // 可以在这里添加语句,绑定其他控件

            }

        }


        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {

            // 通过 Binding 类加载布局

            val binding = ItemViewLinearVerticalBinding.inflate(

                LayoutInflater.from(parent.context),

                parent,

                false

            )

            return MyViewHolder(binding)

        }


        override fun onBindViewHolder(holder: MyViewHolder, position: Int) {

            holder.bind() // 调用 ViewHolder 的绑定方法

        }


        override fun getItemCount() = 20

    }

    查看全部
  •     Kotlin1.4之后没有kotlin-android-extension插件了……官方建议使用View Binding。

        直接写recycler_view.layoutManager又会报错,无奈问了DeepSeek,它给出了解决方案,编辑器确实没有报错了,但是代码同老师的差别就太大了。我暂时没有能力验证这种方案是否可以同接下来的课程内容兼容,先贴在这里:


    class HomeFragment : Fragment(R.layout.fragment_home) {
       // 定义 Binding 对象(根据布局文件名称自动生成)
       private var _binding: FragmentHomeBinding? = null
       private val binding get() = _binding!! // 非空断言仅在 _binding 非空时使用

       override fun onCreateView(
           inflater: LayoutInflater,
           container: ViewGroup?,
           savedInstanceState: Bundle?
       ): View {
           // 初始化 Binding
           _binding = FragmentHomeBinding.inflate(inflater, container, false)
           return binding.root
       }

       override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
           super.onViewCreated(view, savedInstanceState)
           // 通过 binding 访问视图
           binding.recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
           // 其他代码(例如设置 Adapter)
       }

       override fun onDestroyView() {
           super.onDestroyView()
           // 清理 Binding 避免内存泄漏
           _binding = null
       }
    }

    查看全部
  • https://img1.sycdn.imooc.com/5951da68090dff9a17310785.jpg

    index 不能超过集合size的大小 这个在java中一样的

    查看全部
  • 新版已带 material,无需再增加依赖

    查看全部
  • 课程源码

    https://github.com/ThirdPrince/android2021

    Kotlin扩展函数与实现机制探索

    https://cloud.tencent.com/developer/article/1146533

    查看全部
  • 这个lambda隐形参数,怎么出现的?需要安装什么插件吗?

    查看全部
  • 老师 笔记麻烦分享下
    查看全部
  • 有用

    查看全部
  • JsonToKotlinClass 插件

    查看全部
    0 采集 收起 来源:Gson数据解析

    2024-02-20

  • (一)具名参数

    (有默认值的参数,不传的情况下,别的参数需要写清楚参数名=值)

    read(1,2)

    read(start = 2)

    https://img1.sycdn.imooc.com/659953b1000196b509200502.jpg

    (二)重点:方法传参中传递方法

    下图,read2方法中的第三个参数为一个方法  action:()->String

    【这个参数名为action,action参数名后加了(),代表这个参数是一个方法】

    【action后边的()里是这个方法的参数,String是这个方法的返回值】

    【如果该方法没有返回值,则为Unit,写法action:()->Unit,代表无参无返回值】


    https://img1.sycdn.imooc.com/6599557f0001d37b09600211.jpg


    (1)括号内传递action方法参数

    在调用read2方法时,参数action,写法参数名 = {方法体}

    read2(1,2,action = {

                                  这个里边是action的方法体

                                  最后一行代表这个方法的返回值

                                  "read" //代表这个方法的返回值为read

                           }

                )

    https://img1.sycdn.imooc.com/659958030001218b05180181.jpg


    (2)括号外传递方法参数(方法参数是参数的最后一个时才可这么写)

    不需要写明action={},可以省略action=,直接在小括号的外边写{},{}里边代表这个action方法参数的方法体

    https://img1.sycdn.imooc.com/659957e50001248403700132.jpg

    (三)可变数量的参数 (vararg修饰的参数)传几个都行

        只有一个参数可以被标记为vararg,当vararg不是最后一个参数时,别的参数传递时需要参数名=“”这样传递,用具名参数这样子传递,编辑器才能区分开

    https://img1.sycdn.imooc.com/65995abc00015ccb09550466.jpg

    https://img1.sycdn.imooc.com/65995b3600018c3908950302.jpg

    https://img1.sycdn.imooc.com/65995c380001d03308230143.jpg

    如下,world数组前加一个*星号键,就可以把world里的所有元素当做参数传递给append2

    https://img1.sycdn.imooc.com/65995c28000114be07850147.jpg

    查看全部
  • (一)方法的定义:

    fun 方法名 (参数列表):返回值{方法体}

    参数列表:参数名 冒号 参数类型(多个参数用逗号隔开)

    示例:fun getSize (num:Int , num2:Int):Int{}


    (二)类的分类

    普通类:用class声明

                  方法调用时,直接类名().方法名(不需要和java一样,不用new)

    静态类:用object声明(工具类都用object声明)

                  方法调用时,直接类名.方法(静态类里都是静态方法,不需要构建实例对象)

    伴生类:用处:当想要在普通类class声明的类里,定义静态方法的话,写在companion 里

                  使用:声明在普通类里边,

                             因为本来想要调用普通类里的方法时,必须类名().方法名

                             但是如果此方法在伴生类里,则可以直接类名.方法名(省去了构建实例对象)

                             如下,可直接Person.test()   , 原本Person().test

                              class Person{

                                     companion object{

                                            fun test(){ }

                                     }

                                }

    (三)方法的参数解释

               https://img1.sycdn.imooc.com/659952920001e33802120184.jpg

    (1)默认参数:参数可设置默认值,可以减少方法重载的数量

                               (写默认值的参数可不传)

    https://img1.sycdn.imooc.com/659952a4000102ab09060231.jpg

    (2)具名参数

    (3)可变数量的参数

    查看全部
  • (一)kotlin中的集合分类

    https://img1.sycdn.imooc.com/6599491300014c8b08900278.jpg

    (1)list(有序且长度可变的列表(因可add,remove),通过get(index)获取某个下标的元素)

    (2)set(无序,集合里元素唯一,不会有重复元素)

    (3)map(键值对,键唯一,值可重复)


    (二)集合的创建方式

    (list,map,set分别的创建方式)

    https://img1.sycdn.imooc.com/659949a900012f3608640644.jpg


    (三)集合的一些基本操作,常用的方法

    https://img1.sycdn.imooc.com/659949e500013fd007470543.jpg

    (四)集合的一些变换操作

    https://img1.sycdn.imooc.com/65994a21000171ef06320631.jpg

    查看全部
  • 数组的构造函数,it指数组的下⌚️

    查看全部

  • psvm 快速生成main方法

    显示声明 变量:类型 如 val intNumber:Int

    查看全部
  • 文档地址

    http://8.136.122.222/book/primary/

    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
课程从零完整的讲解了google力推且备受千万开发者喜爱的的Kotlin语言。并以此为基础,以通俗易懂,难易循序渐进的方式、小白的视角讲解了AndroidUI、Android网络编程、Android四大组件等必知必会的技能,每章标配一节案例实战,融会贯通本章所学。
老师告诉你能学到什么?
Android环境搭建,开发语言Kotlin、AndroidUI开发的初中高级控件、Android中的网络编程、Android 四大组件、类似慕课App的开发实战、Android进阶中级、高级的学习路线。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!