溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于ListView 自定義 Adapter的問題

發(fā)布時間:2020-07-27 03:01:46 來源:網絡 閱讀:524 作者:HDDevTeam 欄目:開發(fā)技術

上周碰到了一個問題,就是我自定義了一個View進行繪圖,如果這個圖多了以后,一個屏幕顯示不下,于是我第一個想到的就是將這個View放在ScrollView中,可是如果放在ScrollView中的話,這個View就畫不出來,于是上網查找這個問題,說是在View中添加一個下面的函數:

protectedvoid onMeasure(int widthMeasureSpec, int heightMeasureSpec){

          setMeasuredDimension(800,60);

      }

可是我添加了以后還是畫不出來,于是只能換一個思路了。


因為我自定義的View是畫一個窄長的矩形來展現Schedule的,于是我就在想用ListView來承載這30個矩形。

怎么將這些矩形放在ListView中的Item中呢?我試著嘗試了addView這個方法,可是不管用。于是我就查找了一下資料,詳細了解了一下關于ListView的原理。

列表的顯示需要三個元素:

1.ListVeiw:  用來展示列表的View。

2.適配器 :用來把數據映射到ListView上

3.數據:    具體的將被映射的字符串,圖片,或者基本組件。

根據列表的適配器類型,列表分為三種,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,這三種適配器的使用大家可學習下官網上面的使用或者自行百度谷歌,一堆DEMO?。。∑渲幸訟rrayAdapter最為簡單,只能展示一行字。SimpleAdapter有最好的擴充性,可以自定義出各種效果。SimpleCursorAdapter可以認為是SimpleAdapter對數據庫的簡單結合,可以方便的把數據庫的內容以列表的形式展示出來。

系統(tǒng)要繪制ListView了,他首先用getCount()函數得到要繪制的這個列表的長度,然后開始繪制第一行,怎么繪制呢?調用getView()函數。在這個函數里面首先獲得一個View(這個看實際情況,如果是一個簡單的顯示則是View,如果是一個自定義的里面包含很多控件的時候它其實是一個ViewGroup),然后再實例化并設置各個組件及其數據內容并顯示它。好了,繪制完這一行了。那再繪制下一行,直到繪完為止,

但是這些還不能有效的解決我的問題,于是我又查找了資料,發(fā)現我需要自定義一個Adapter將自定義View加載到ListViw中。

而在所有代碼都寫好了以后,發(fā)現自定義View還是無法加載到ListView中,我試著將自定義View改為TextView,發(fā)現可以加載,Button也可以。最后我向組長進行了請教,他告訴我說要在自定義的Adapter中加入

protectedvoid onMeasure(int widthMeasureSpec, int heightMeasureSpec){

          setMeasuredDimension(800,60);

      }

我發(fā)現加入后,完美的解決了我的問題。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI