2014-03-26 52 views
1

我想要做的是填充一個listView與views /元素,可能是一個textview/imageview。潛在地,這些文本瀏覽是可擴展的。如果textview被展開,我想讓listview調整大小幷包裝內容。在Android中查看時調整ListView元素的大小?

已經有幾種解決方案: 1.使ListView元素不可見,以便ListView中的視圖已經達到所需的大小。在這種情況下,使用原始長字符串創建文本視圖,然後摺疊它。 2.調整適配器中的元素,然後調用notifyDataSetChanged();

但是我正在尋找一種解決方案,即使ListView中的視圖可見,它也會自動調整大小。我嘗試過使用解決方案#2,雖然它適用於更改視圖內部的值(如字符串),但它不會調整視圖的大小,除非視圖滾動屏幕然後返回到視圖中。

我的代碼的相關部分如下:

holder.text.setTrim(!holder.text.getTrim()); 
holder.text.setText(); 
holder.text.requestFocusFromTouch(); 
notifyDataSetChanged(); 
holder.text.invalidate(); 
vi.invalidate(); 
vi.requestLayout(); 

我把這樣的一個OnClickListener內的適配器的getView函數中。

任何人有任何解決方案?

PS。有沒有人嘗試過使用多個適配器的方法?這對我來說似乎不太好,因爲我有可能有數百個元素。

編輯: 所以我想出了一個愚蠢的解決方案的一部分,是絕對荒謬的。這種行爲毫無意義。下面(primaryTextView是相同的文字作爲上述如。holder.primaryTextView == holder.text)

holder.primaryTextView.setTrim(!holder.primaryTextView.getTrim()); 
if(!holder.primaryTextView.getTrim()){ 
holder.primaryTextView.setVisibility(View.GONE); 
} 
else{ 
holder.primaryTextView.setVisibility(View.VISIBLE); 
} 
notifyDataSetChanged(); 
vi.invalidate(); 

這可以讓你在觀看它展開視圖,但不會讓你縮小視圖一旦文本崩潰了。此外,View.GONE和View.VISIBLE不可互換。最後,在View.GONE被觸發的情況下,textView甚至不會消失。也許這可能是一個線索?

回答

1

沒關係發現了問題: 在我的佈局,我是用高度= 「0dp」,而不是 「WRAP_CONTENT」

+0

我正在使用'match_parent',父母有'wrap_content'。導致同樣的問題。 – JeffRegan

1

它不會調整視圖的大小,除非視圖滾動屏幕然後回到視圖中。

這是工作,但你沒有刷新列表視圖,當你翻屏&回報,列表視圖再現更新後的視圖。

你應該notifyDataSetChanged();adapter.notifyDataSetChanged();

+0

我實際調用notifyDataSetChanged();從我的適配器中。這是我貼的代碼。 我放的粘貼代碼是我的onClickListener中的代碼。 – Faytll

相關問題