提问人:DeThe92 提问时间:7/23/2020 更新时间:7/23/2020 访问量:124
Kotlin:检查项目是否为文本框
kotlin: check if item is textbox
问:
我正在尝试检查元素是否是 kotlin 中的 TextBox。我有一个列表,其中包含以下 4 个项目:
0 = {AppCompatTextView@9533} "androidx.appcompat.widget.AppCompatTextView{4df7f9e V.ED..... ........ 0,0-47,111 #7f07007f app:id/roller1}"
1 = {AppCompatTextView@9554} "androidx.appcompat.widget.AppCompatTextView{e3faa7f V.ED..... ........ 0,111-47,222 #7f070080 app:id/roller2}"
2 = {AppCompatTextView@9555} "androidx.appcompat.widget.AppCompatTextView{4487a4c V.ED..... ........ 0,222-47,333 #7f070081 app:id/roller3}"
3 = {AppCompatButton@9531} "androidx.appcompat.widget.AppCompatButton{193bc20 VFED..C.. ...P.... 406,333-673,465 #7f07007e app:id/roll_button}"
现在,我正在尝试检查这些项目中的每一个是否都是具有以下表达式的 TextView:。但出于某种原因,该条件适用于所有项目。谁能解释一下为什么?谢谢!if (item is TextView){ rollRoller(item) }
答:
0赞
Jenea Vranceanu
7/23/2020
#1
正如 IR42 所说 - Button 扩展了 TextView。
超类的层次结构:AppCompatButton
与其检查,不如使用 或 .但是,这种更改将要求您在布局中使用您检查其视图。is TextView
is AppCompatTextView
AppCompatTextView
AppCompatTextView
有一个已知的子类 - EmojiAppCompatTextView
。因此,它对您来说会更安全。
评论
0赞
DeThe92
7/23/2020
非常感谢!但是你们怎么看待另一种表达方式?if (item !is Button)
0赞
Jenea Vranceanu
7/23/2020
您可以获得很多非文本视图结果。这实际上取决于你要做什么。
评论
public class Button extends TextView