【发布时间】:2017-11-04 14:28:31
【问题描述】:
要在 Android findViewById() 中从 XML 获取 View,假设是 ListView。
由于findViewById()返回的是父View对象而不是ListView对象,我们需要强制转换findViewById()的返回
ListView listView = (ListView) findViewById(R.id.listView);
findViewById() 的输出没有强制转换:
System.out.println(findViewById(R.id.mainListView).getClass()); // class android.widget.ListView
System.out.println(findViewById(R.id.mainListView).getClass().getSimpleName()); // ListView
System.out.println((findViewById(R.id.mainListView) instanceof ListView)); // true
但确实 findViewById() 正在返回 ListView 对象,那么为什么需要强制转换 findViewById() 的返回?
【问题讨论】:
-
您确定在这种特殊情况下需要它吗?来自文档:“注意:在大多数情况下——取决于编译器支持——结果视图会自动转换为目标类类型。如果目标类类型不受约束,则可能需要显式转换。” (该方法是通用的,类型参数将由您尝试分配的类型推断出来。)
标签: java android listview casting