Android 上下文菜单:我不理解一些示例代码行。科特林

Android 上下文菜单:我不理解一些示例代码行。科特林,android,kotlin,Android,Kotlin,我正在学习kotlin上的android开发,我有一个代码示例: 我不明白当我们使用这些代码行时会发生什么(kotlin做什么?): 我只知道通过使用这些行,我们将得到Toast中使用的“val name” 在开始制作Kotlin之前,您可能应该先阅读Kotlin的基础知识 这是这两行的Java等价物: final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); final int listPo

我正在学习kotlin上的android开发,我有一个代码示例: 我不明白当我们使用这些代码行时会发生什么(kotlin做什么?):


我只知道通过使用这些行,我们将得到Toast中使用的“val name”

在开始制作Kotlin之前,您可能应该先阅读Kotlin的基础知识

这是这两行的Java等价物:

final AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
final int listPosition = info.position;
Kotlin不需要显式类型声明,并且可以推断变量应该是什么,因此
val variableName=which
通常就足够了


Kotlin还有一种不同的用于转换对象的语法,通过将其与Java进行比较可以看出。同样,您应该在尝试项目之前阅读Kotlin文档。

这些行没有任何特殊功能。他们只是创建新的常量并为其赋值

第一行创建一个名为
info
的常量,它的值为
item.menuInfo作为AdapterContextMenuInfo
。现在什么是
item.menuInfo
?这是一个包含所选选项位置的对象,稍后我们将在第二行中参考
info.position
。在第二行,我们创建了一个名为
listPosition
的常量,它存储值
info.position
。然后,我们使用该索引获取使用
数组选择的选项

这些行可以组合成一条语句,但可读性较差:

Toast.makeText(
    this@MainActivity, " " + selectedItemTitle + " " +
    array[(item.menuInfo as AdpaterContextMenuInfo).position]
    , Toast.LENGTH_LONG).show()

因此,这3行代码只是为了向您展示如何以比将它们全部写在一条语句中更易读的方式获取所选项目的名称。

我们之间存在一些误解,因此让我们使用3行代码:val info=item.menuInfo作为AdapterContextMenuInfo val listPosition=info.position val name=array[listPosition]我们搜索数组中的某个位置(我是指字符串),并使名称等于该字符串。但我不明白我们是如何得到“List position”的我不知道你当时不明白什么。你不明白数组是如何工作的吗?我们之间有一些误解,所以让我们使用3行代码:val info=item.menuInfo作为适配器ContextMenuInfo val listPosition=info.position val name=array[listPosition]我们搜索某个位置(我是指字符串)在数组中,并使名称等于该字符串。但我不明白我们是如何获得“列表位置”的代码。这非常简单。
item
是单击的MenuItem。每个MenuItem都包含一个MenuInfo对象。该MenuInfo对象包含该项在整个菜单中的位置。谢谢!非常有用:)
Toast.makeText(
    this@MainActivity, " " + selectedItemTitle + " " +
    array[(item.menuInfo as AdpaterContextMenuInfo).position]
    , Toast.LENGTH_LONG).show()