2012-07-10 20 views
1

所以我有這樣的:如何添加新行時調整ListView的大小?

...<!--Stuff above--> 
<ListView 
    android:id="@+id/reminders_list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"></ListView> 
...<!--More stuff below--> 

我的問題是,當我嘗試添加更多不工作,因爲適配器不添加更多的意見,如果沒有更多的空間行。至少在這種情況下。這意味着我需要動態調整它的大小。問題是如何做到這一點?如果除了調整大小是可能的,我寧願這樣做。提前致謝。

+1

您可以使用自定義列表適配器和元素通過列表。 – 2012-07-10 04:48:45

+0

嗯,我其實從來沒有想到這一點。讓我嘗試一下。我會盡快回復你 – Andy 2012-07-10 04:51:04

+0

使用自定義適配器類並通過BaseAdapter擴展它,你將得到4個函數,其中一個將會是getCount(),傳遞你想要的值 – AkashG 2012-07-10 04:52:06

回答

5

問題是在你android:layout_height="wrap_content"

設置高度WRAP_CONTENT將只顯示前三行其餘部分將被忽略。儘量做到爲android:layout_height="fill_parent"

由於Romain Guy(谷歌工程師workd上的UI工具包),在自己的崗位

通過設置寬度wrap_contentyou告訴ListView控件是一樣寬,最寬的孩子說。因此,ListView必須測量它的項目並獲取它必須在適配器上調用getView()的項目。這可能會發生多次,具體取決於佈局過程的數量,父佈局的行爲等。

因此,如果將ListView的佈局寬度或佈局高度設置爲wrap_content,則ListView將嘗試測量每個視圖這是附加到它 - 這絕對不是你想要的。

請記住:避免在任何時候都設置列表視圖或GridView的WRAP_CONTENT,詳細內容見本Google I/O video談論的ListView

Dynamically Adding rows to List View Link_1

Dynamically Adding rows to List View Link_2

Dynamically Adding rows to List View Link_3

的世界Dynamically Adding rows to List View Link_4

+0

我不推薦使用'fill_parent'作爲'fill_parent',但它不起作用。同樣的問題。就像它的一個奇怪的事情。會發生什麼是我有一個初始列表有1行。這確定了尺寸。當我點擊添加另一行時,由於沒有空間而失敗。我認爲它適合它,但它不這樣做。任何想法爲什麼這樣做?!大聲笑。但感謝vid。肯定會看到它。也許這有一些答案 – Andy 2012-07-10 05:02:41

+0

您是否在添加後檢查了您的適配器大小,以便您可以知道只有視圖未來或數據本身未添加 – Venky 2012-07-10 05:06:05

+0

其實是的,我知道。我不知道尺寸大小,但是在運行時我正在進行日誌記錄,並且它完全忽略了另一行的添加。它運行並替換位置0中的任何東西,所以它會運行,只是不會向位置1添加任何東西。但是當您實際設置高度時,比如說「80dp」,然後執行相同的操作,位置0和1可以是看到了,但沒有位置2.從那個試驗和錯誤中,我已經認識到'ListView'只是不會添加更多的行,除了它在初始創建時已經有空間的地方。 – Andy 2012-07-10 05:12:48

2

將元素添加到列表適配器時,需要調用其notifyDataSetChanged()成員函數,通知任何附加的觀察者(如ListView),數據已更改,並會導致刷新。

+0

我正在那樣做。 – Andy 2012-07-10 05:00:21

相關問題