2012-03-22 56 views

回答

27

閱讀這些滾動型是用來放不同或相同的子視圖或佈局和所有可以滾動。

ListView用於將相同的子視圖或佈局放置爲多個項目。所有這些項目也是可滾動的。

Simply ScrollView適用於同構和異構集合。 ListView僅用於同質收集。

+0

基於適配器,ListView可以與ScrollView一樣不同。區別在於ListView的內容由適配器支持,而ScrollView可以與單個View/ViewGroup子級一起工作,當然這也可以通過代碼構建。 – dzsonni 2013-07-12 11:25:09

+39

這個答案實際上忽略了一個重要的觀點,那就是在ListView中Views是按需創建的。 ListView中的視圖被回收,並且View層次結構中不會有更多視圖可以顯示在屏幕上。 使用ScrollView,您的所有視圖都在內存中,並且在層次結構中即使它們不顯示在屏幕上。您不會看到回收,並且它不受適配器支持。 – 2013-09-21 05:28:53

+5

「ListView僅用於同類收藏」:這一點不正確,誤導開發者。自api級別1以來,ListView也可以填充異構視圖。 – 2014-02-25 12:14:00

0

ListView由包含DataSource的Adapter支持。這使您可以輕鬆顯示行中的數據。

滾動型允許你把內容這裏面,如果含量超過了滾動的規模,這將允許用戶滾動。

它們都有自己的用途,但它取決於你正在嘗試做的。

24

它們完全不同。

A ScrollView是一個簡單的滾動容器,你可以用它來滾動你放入它的任何東西,這可能是一個項目列表,或者它可能不是。

http://developer.android.com/reference/android/widget/ScrollView.html

的ListView非常特別設計爲保持列表,其中物品通常看起來是相同的(或至少跟隨一個圖案,例如章節標題)。 ListView也被設計爲連接到某種類型的數據源,SQLite,數組,內容提供者等。ListView可以擴展以處理大量的列表項。

http://developer.android.com/resources/tutorials/views/hello-listview.html

如果您有數據,您需要在列表中顯示,使用一個ListView。如果你只需要滾動內容,那麼ScrollView就足夠了。

1

滾動型簡單地將它的內容可滾動的容器,你只能通過添加視圖它編輯它的內容。

ListView的是使用它處理爲您創造數據對象的意見適配器類,你只需要編輯的數據,以及佈局修改由適配器自動完成。

,當你有一個屏幕(例如:具有多個字段的形式)滾動型應使用不適合在小型設備上一個屏幕,因爲這樣的滾動視圖提供用戶向下滾動的可能性。

應該在表示數據集時使用ListView。

您可以在http://developer.android.com/guide/index.html

0

由於勝過千言萬語的圖像,這裏是完美的現實生活中的例子:

列表視圖就像客齊集應用

滾動型是像易趣應用

此外,請參閱像廣告牌或牆上的滾動視圖,您可以在其中放置一堆不同的東西。

而一個listview更像是一個結果頁面:結果都是相同的性質,因此它們完全適合在listview中。像聯繫人列表:他們都共享相同的結構;電話號碼姓名地址等....

1

的ListView: -

在ListView控件,您可以輕鬆地管理XML項目的佈局要在顯示列表中。

您需要在顯示列表中告訴適配器有多少物品。

根據您的要求,您可以通過覆蓋Adapter的getItemViewType()方法來設計同構視圖和異構視圖。

ListView中的列表項是根據屏幕大小創建的。即在屏幕上可以顯示多少項目,當列表在運行時滾動時,創建附加視圖(項目)。顯示一次的視圖在移出屏幕時被緩存,當列表滾動回到先前狀態時,會顯示相同的視圖,但不會創建此時的視圖,而是從緩存中獲取視圖。

ScrollView: -

Cache概念不適用於ScrollView。

所有視圖在屏幕上時立即創建,並且在滾動時移出屏幕時不會被緩存。它們存在於內存中(主要),可能導致內存泄漏,因爲創建的對象數量不會被垃圾收集器銷燬,因爲它們被引用,直到您在同一頁面上。

儘管您可以創建同質以及異質視圖。如果在列表中顯示更多項目,無論您是使用xml進行設計還是使用Java代碼動態創建,管理佈局都會非常繁瑣。

如果您有一個不包含項目列表的單個頁面,例如註冊表單,預訂表單,但該視圖大於屏幕大小,則將scrollview作爲父視圖也應該牢記,ScrollView只能有一個直接的子佈局/視圖。