Android中BaseAdapter深入理解

2021-08-14 03:30:18 字數 1164 閱讀 4847

question:當乙個列表有很多條資料的需要自定義adapter載入時,列表資料根據資料的屬性不同設定不同的顏色。**例項如下:

@override

public view getview(int

position, view convertview, viewgroup parent) else

bean bean =mdatas.get(position);

if (bean.getphone().equals(12345)) else if(bean.getphone().equals(56789))

holder.titletv.settext(bean.gettitle());

holder.desctv.settext(bean.getdesc());

holder.timetv.settext(bean.gettime());

holder.phonetv.settext(bean.getphone());

return

convertview;

}

如上所示**,若第一頁面list載入了8個item,出現兩個12345的號碼,後面向下拉去資料,baseadapter會將上面滑過去的資料存到adapter特定的記憶體中,下次載入資料直接使用上面劃過的資料記憶體物件。。此時如果第14條資料的載入正好使用的是第三條劃過的資料記憶體,恰巧第三條被設定了顏色,那麼此時使用第14條獲取bean.getphone()

的資料為888888,沒有上述設定的equals等於這個數,那麼就不會設定顏色。此時會出現 這樣的情況:第十四條資料又是使用的第三條的資料記憶體,所以資料上面可能變化了,但是顏色不會變化,也就是第十四條資料的顏色是第三條資料的顏色,未改變正常的顏色。。

出現此情況的原因用專業的角度分析如下:

getviewtypecount()andgetitemviewtype(int)).

android api是這麼說的。

就是baseadapter會使用記憶體復用來減少記憶體的使用。

android中有個叫做recycler的構件,它是用來儲存被劃過的item記憶體物件的。第一頁的listitem載入完,滑動後看不見的item會被存在recycler裡,接下來,就復用這些個item。達到減少記憶體消耗的目的。

android 中layout weight的作用

layout weight 用於給乙個線性布局中的諸多檢視的重要度賦值。所有的檢視都有乙個layout weight值,預設為零,意思是需要顯示多大的檢視就佔據多大的螢幕空 間。若賦乙個高於零的值,則將父檢視中的可 用空間分割,分割大小具體取決於每乙個檢視layout weight 值以及該值在當前...

Android中LayoutParams的用法

寧願做過了後悔,也不要錯過了後悔。本講內容 layoutparams的用法 一 layoutparams的認識 從官方文件可知layoutparams繼承於android.view.viewgroup.layoutparams.layoutparams相當於乙個layout的資訊包,它封裝了layo...

android中layout weight的理解

例如 xmlns android android layout width fill parent android layout height wrap content android background 00ff00 android weightsum 0 android orientation...