2017-06-03 87 views
1

要得到一個查看從XML在Android findViewById()被用來讓我們說一個ListViewAndroid需要什麼才能返回findViewById()?

由於事實findViewById()返回父查看對象,而不是的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()回報?

+0

你確定在這種特殊情況下你需要它嗎?從文檔:「注意:在大多數情況下(取決於編譯器支持),結果視圖會自動轉換爲目標類類型,如果目標類類型不受約束,則可能需要顯式轉換。 (該方法是通用的,並且類型參數將通過您要分配的類型推斷出來。) –

回答

0

作爲一個點,findViewById的函數返回一個視圖,而不是它的子畫面,我想你感到困惑的返回值和信息的getClass得到。的findViewById(R.id.mainListView).getClass()的ListView因爲視圖仍然有它的子視圖的信息,你可以得到它通過way.But實際上findViewById返回查看的值,所以輸出你必須手動套上它。

相關問題