经过括号后的方法,Kotlin中尖括号的作用是什么?

时间:2018-08-04 21:34:14

标签: android android-recyclerview kotlin

在RecyclerView的官方guide上, 是

z=20

我无法理解尖括号的含义, 我的直觉是它们类似于关键字public FoodItemAdapter(Activity context, List<FoodItemclass> arrayList) { super(context,0,arrayList); } ,对吗?

recyclerView = findViewById<RecyclerView>(R.id.my_recycler_view).apply {
    // use this setting to improve performance if you know that changes
    // in content do not change the layout size of the RecyclerView
    setHasFixedSize(true)

    // use a linear layout manager
    layoutManager = viewManager
我声明为as

recyclerView =  view.findViewById<RecyclerView>(R.id.recycler_view) as RecyclerView

that I use in my Fragment( please notice the variable view

2 个答案:

答案 0 :(得分:1)

找到了! 在此

post有明确的解释:

  

您的API级别为26,此时findViewById的返回类型为   泛型T代替View,因此可以进行推断。你可以看到   相关的更改日志在这里。

     

因此您应该能够做到这一点:

     

val recycler_view = findViewById(R.id.recycler_view)或   这个:

     

val recycler_view:RecyclerView = findViewById(R.id.recycler_view)

答案 1 :(得分:-1)

这就像一个构建器模式

同一示例通常会写为

    viewManager = LinearLayoutManager(this)
    viewAdapter = MyAdapter(myDataset)
    recyclerView = findViewById<RecyclerView>(R.id.my_recycler_view)()
    recyclerView.setHasFixedSize(true)
    recyclerView.setLayoutManager(viewManager)
    recyclerView.adapter(viewAdapter)

但是kotlin通过使用类似于构建器模式的方式简化了这一过程

    viewManager = LinearLayoutManager(this)
    viewAdapter = MyAdapter(myDataset)
    recyclerView = findViewById<RecyclerView>(R.id.my_recycler_view).apply {
        setHasFixedSize(true)
        layoutManager = viewManager
        adapter = viewAdapter
    }

这种方法有助于以更有效的方式隔离代码

相关问题