1.ListView

ListView(列表視圖)

1.常用屬性和方法

? ? ? ? ? ? ?footerDividersEnabled:是否在footerView(表尾)前繪制一個分隔條,默認(rèn)為true

? ? ? ? ? ? ?headerDividersEnabled:是否在headerView(表頭)前繪制一個分隔條,默認(rèn)為true

? ? ? ? ? ? ?divider:設(shè)置分隔條,可以用顏色分割,也可以用drawable資源分割

? ? ? ? ? ? ?dividerHeight:設(shè)置分隔條的高度

? ? ? ? ? ? ?android:scrollbars="none" 隱藏滑動條

? ? ? ? ? ? ?stackFromBottom:是否設(shè)置列表從底部開始顯示

? ? ? ? ? ? ?addHeaderView(View v):添加headView(表頭),括號中的參數(shù)是一個View對象

? ? ? ? ? ? ?addFooterView(View v):添加footerView(表尾),括號中的參數(shù)是一個View對象

? ? ? ? ? ? ?addHeaderView(headView, null, false):和前面的區(qū)別:設(shè)置Header是否可以被選中

? ? ? ? ? ? ?addFooterView(View,view,false):同上

? ? ? ? ? ? ?setEmptyView(View v) :設(shè)置空布局(必須再當(dāng)前View hierarchy)

? ? ? ? ? ? ?注:1.使用這個addHeaderView方法必須放在listview.setAdapter前面,否則會報錯

? ? ? ? ? ? ? ? ? ? ?2.positon是從表頭開始算的,添加了表頭糕珊,data[0]=表頭

? ? ? ? ? ? ? ? ? ? 3.setEmptyView(View v):兩種方式設(shè)置剑鞍,否則setEmptyView不會生效.

方法1:布局放入統(tǒng)一層次結(jié)構(gòu)
方法2:EmptyView單獨作為一個Layout


2.事件

? ? ? ? ? ? listview.setOnItemClickListener();

? ? ? ? ? ? public void onItemClick(AdapterView<?>?parent,View view,int position,long id){}


3.ListView焦點問題

情景:當(dāng)listview的item上有Button锹锰,CheckBox箕宙,EditText等控件時,ListView的item點擊不了也觸發(fā)不了onItemClick的方法

? ? ? ? ? ?此時ListView的焦點被其他控件搶了

方法1:為搶占了焦點的控件設(shè)置:android:focusable="false"

? ? ? ? ? ? ?缺點:對EditText無效(可以獲取焦點但瞬間失去焦點位他,也不會彈出小鍵盤)

方法2(最優(yōu)):在Item布局的根節(jié)點添加android:descendantFocusability="blocksDescendants"

? ? ? ? ? ? ? ? ? ? ? ? ? ? beforeDescendants:viewgroup會優(yōu)先其子類控件而獲取到焦點

? ? ? ? ? ? ? ? ? ? ? ? ? ? afterDescendants:viewgroup只有當(dāng)其子類控件不需要獲取焦點時才獲取焦點

? ? ? ? ? ? ? ? ? ? ? ? ? ? blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點


4.ListView之checkbox錯位問題

ListView上可見的Item處于內(nèi)存中,其他Item則放在這個Recycler中产场,第一次加載item時鹅髓,當(dāng)前頁面中的convertView都為NULL,當(dāng)滾出屏幕京景,這是時候ConvertView不為空窿冯,所以新的一項會復(fù)用這個ConvertView(如果第一項被checked,新出來的第8項由于復(fù)用也checked)

解決方法:記錄當(dāng)前item中checkbox的狀態(tài)确徙,初始化進行判斷醒串,設(shè)置是否選中

? ? ? ? ? ? ? ? ? eg:放到一個HashMap中执桌, 每次初始化的時候根據(jù)postion取出對應(yīng)的boolean值,然后再進行checkbox的狀態(tài)設(shè)置


5.ListView的數(shù)據(jù)更新問題

使用notifyDataSetChanged()方法通知數(shù)據(jù)更新厦凤,該方法會判斷是否需要重新渲染鼻吮,僅會渲染View狀態(tài)發(fā)生變化的那個Item


6.ListView Item多布局的實現(xiàn)

核心getItemType方法
getView做判斷(根據(jù)type加載不同布局)
setTag(id,viewHold)保證唯一


注:type值的定義要從0開始


BaseAdapter優(yōu)化

原因:有多少item就會調(diào)用多少次getView, 每次都是新inflate一個View较鼓,都要進行這個XML的解析椎木,這樣會很浪費資源

優(yōu)化方法:1.復(fù)用ConvertView(復(fù)用布局,這個convertView是系統(tǒng)提供給我們的可供服用的View 的緩存對象)

? ? ? ? ? ? ? ? ? 2.ViewHolder重用組件(防止每次findview)

繼承BaseAdapter重寫4個方法
未優(yōu)化情況
通過判斷convertView是否為空復(fù)用convertView
自定義ViewHolder防止多次查找view

注:修飾ViewHolder的 static博烂,加靜態(tài)是為了在多個地方使用這個 Holder的時候香椎,類只需加載一次,如果只是使用了一次禽篱,加不加也沒所謂


打造通用adapter

使用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畜伐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子躺率,更是在濱河造成了極大的恐慌玛界,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悼吱,死亡現(xiàn)場離奇詭異慎框,居然都是意外死亡,警方通過查閱死者的電腦和手機后添,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門笨枯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遇西,你說我怎么就攤上這事馅精。” “怎么了粱檀?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵洲敢,是天一觀的道長。 經(jīng)常有香客問我茄蚯,道長沦疾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任第队,我火速辦了婚禮哮塞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凳谦。我一直安慰自己忆畅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著家凯,像睡著了一般缓醋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绊诲,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天送粱,我揣著相機與錄音,去河邊找鬼掂之。 笑死抗俄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的世舰。 我是一名探鬼主播动雹,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跟压!你這毒婦竟也來了胰蝠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤震蒋,失蹤者是張志新(化名)和其女友劉穎茸塞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體查剖,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡钾虐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梗搅。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禾唁。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡效览,死狀恐怖无切,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丐枉,我是刑警寧澤哆键,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站瘦锹,受9級特大地震影響籍嘹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弯院,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一辱士、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧听绳,春花似錦颂碘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塔拳。三九已至,卻和暖如春峡竣,著一層夾襖步出監(jiān)牢的瞬間靠抑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工适掰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留颂碧,地道東北人。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓攻谁,卻偏偏與公主長得像稚伍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子戚宦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 在android開發(fā)中Listview是一個很重要的組件个曙,它以列表的形式根據(jù)數(shù)據(jù)的長自適應(yīng)展示具體內(nèi)容,用戶可以自...
    丶萌面超人閱讀 1,313評論 0 13
  • 一、適用場景 ListViewListview是一個很重要的組件受楼,它以列表的形式根據(jù)數(shù)據(jù)的長自適應(yīng)展示具體內(nèi)容,用...
    Geeks_Liu閱讀 10,684評論 1 28
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,283評論 25 707
  • 經(jīng)過了孕期前后的種種“挫折”垦搬,終于熬過了整整十個月,只等著最后那臨門的一腳和那哇哇的哭叫聲啦艳汽! 十月懷胎猴贰,雖然沒有...
    葉聽雨閱讀 269評論 0 1
  • 12月5號中午一點,老媽終于打電話給我了河狐,因為前面我在廈還沒找到工作米绕,她索性叫我回去考考家鄉(xiāng)的事業(yè)編。由于自己打算...
    橋上橋樹閱讀 246評論 0 0