Adapter類的定義:
從事四川樂山服務器托管,服務器租用,云主機,網站空間,域名注冊,CDN,網絡代維等服務。Adapter對象是AdapterView和底層數據見的橋梁。Adapter用于訪問數據項,并且負責為數據項生成視圖
AdapterView是一個抽象類,用于那些需要通過Adapter填充自身的視圖,其常見子類是ListView。顯示AdapterView時會調用Adapter的getView()方法創(chuàng)建并添加每個子條目的視圖。Adapter的getView()方法就是用來創(chuàng)建這些視圖的,Adapter并不會為每行數據都創(chuàng)建一個新視圖,而是提供了回收舊視圖的方法。運行機制簡單說就是當getView()方法被調用是,如果convertView參數不為null,就使用convertView,不用新建視圖,通過convertView.findViewById()方法獲取每個UI控件的引用,然后使用與當前項的位置綁定的數據來填充視圖
為了優(yōu)化,使用ViewHolder模式,ViewHolder是一個靜態(tài)類,可以用于保存每行的視圖以避免每次調用getView時都會調用findViewById()
public class Hack25Activity extends ListActivity { private static final int MODEL_COUNT = 30; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ModelAdapter(this, 0, buildModels())); } private ListbuildModels() { final ArrayList ret = new ArrayList (MODEL_COUNT); for (int i = 0; i < MODEL_COUNT; i++) { final Model model = new Model(); model.setImage(R.mipmap.ic_launcher); model.setText1("Name " + i); model.setText2("Description " + i); ret.add(model); } return ret; } }