Android之Adapter的封裝與抽象

2021-07-01 20:37:02 字數 3218 閱讀 6567

在開發的過程中,常常會用到viewpager、listview、gridview等、這些帶有item的檢視控制項,而這些控制項有個共同點就是都要用到它們的介面卡,我們在實現檢視展示時,一般都會去寫個自定義的介面卡去繼承pageradapter或adapter或adapter的子類,因為android原始碼自帶的這些介面卡都比較抽象,往往在我們開發時,寫的一些自定義介面卡都需要重寫adapter父類的一些方法,在重寫時,有很多較通用性的**,比較耦合,下面將pageradapter和adapter的子類baseadapter進行了封裝與抽象,免去了每次都去重寫這些通用的**,**如下:

1.viewpageradapter 

/**

* 通用viewpageradapter

* @author jenly

* */

public class viewpageradapter extends pageradapter

@override

public void destroyitem(view container, int position, object object)

@override

public int getcount()

@override

public object instantiateitem(view container, int position)

@override

public boolean isviewfromobject(view paramview, object paramobject)

public listgetlistviews()

public void setlistviews(listlistviews)

}

因為viewpager的item基本上都是繼承view,所以這個viewpageradapter 基本上可作為viewpager控制項的通用介面卡。

2.abstractadapter

/**

* 抽象介面卡(免去一些通用的**)

* @author jenly

* * @param */

public abstract class abstractadapterextends baseadapter

@override

public int getcount()

@override

public object getitem(int position)

@override

public long getitemid(int position)

public listgetlistdata()

public void setlistdata(listlistdata)

public view inflate(int layoutid)

}

abstractadapter將父模擬較有共性的方法重寫,自定義介面卡時,只要繼承abstractadapter,重寫getview方法就可以了。

3.holderadapter

/**

* 通用介面卡(適合一些常規的介面卡)

* @author jenly

* * @param t:實體物件,h:viewholder

*/public abstract class holderadapterextends abstractadapter

@override

public view getview(int position, view convertview, viewgroup parent) else

bindviewdatas(holder,t,position);

return convertview; }

/*** 建立convertview

* @param layoutinflater

* @return

*/public abstract view buildconvertview(layoutinflater layoutinflater,t t,int position);

/*** 建立檢視holder

* @param convertview

* @return

*/public abstract h buildholder(view convertview,t t,int position);

/*** 繫結資料

* @param holder

* @param t

* @param position

*/public abstract void bindviewdatas(h holder,t t,int position);

}

holderadapter 繼承於上面的abstractadapter類,將getview方法進行重寫與抽象,使**更加簡潔,用起來更加簡單,只要是繼承於baseadapter的自定義介面卡類,改為繼承於holderadapter 基本上通用,然後只需實現buildconvertview、buildholder、bindviewdatas這三個方法。

下面是個自定義的測試介面卡,繼承holderadapter實現它的三個抽象方法:

/**

* @author jenly

* */

public class testholderadapter extends holderadapter

@override

public view buildconvertview(layoutinflater layoutinflater,string t, int position)

@override

public viewholder buildholder(view convertview,string t, int position)

@override

public void bindviewdatas(viewholder holder,string t, int position)

public static class viewholder

}

所有最新原始碼已總結上傳至

github

歡迎star或fork。

Android之Adapter用法總結

adapter是連線後端資料和前端顯示的介面卡介面,是資料和ui view 之間乙個重要的紐帶。在常見的view list view,grid view 等地方都需要用到adapter。下圖直觀的表達了data adapter view三者的關係 img android中所有的adapter一覽 i...

Android編碼學習之Adapter

1.apter的作用 adapter是將資料繫結到ui介面上的橋接類。adapter負責建立顯示每個專案的子view和提供對下層資料的訪問。adapter的作用就是將要在列表內顯示的資料和列表本身結合起來。列表本身只完成顯示的作用,其實他就是繼承自viewgroup類。但是他又有乙個獨特的函式就是s...

Android中的Adapter分析

adapter使資料繫結到控制項變得更加簡單和靈活。用途 為容器提供子檢視,利用檢視的資料和元資料來構建每個子檢視,arrayadapter cursoradapter resourcecursoradapter。如果需要自定義介面卡,可以擴充套件抽象類baseadapter。adapter是資料u...