Android adapter更簡單的使用方法

2021-07-02 13:23:50 字數 2583 閱讀 9609

android應用中一般都存在大量的列表展示,幾乎全部用到了adapter,在adapter中每次去findviewbyid()找到view總是很長的篇幅,也很麻煩,於是就想有沒有乙個辦法只需提供控制項id和我需要做的操作,然後就能完成adapter的適配,在網上查了一些資料後終於完成了,自己總結一下:

1、首先肯定需要乙個基類,來完成其所有子類的都需要完成的事情,對於adapter來說無外乎就是建立concerview,viewhodler等,關鍵在於getview中

public abstract class commonadapterextends baseadapter 

@override

public int getcount()

@override

public t getitem(int position)

@override

public long getitemid(int position)

@override

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

public abstract void convert(commonviewholder helper, t item, int position);

//此方法為抽象方法,等待子類去實現,這也就是實現資料和控制項聯絡起來的方法

private commonviewholder getviewholder(int position, view convertview,

viewgroup parent)

}

2、從上面的comadapter來看,viewholder需要實現的功能為根據layoutid返回concerview,同時再看抽象方法convert()的引數 為viewholder 和 資料來源,我們實現的子類去重寫這個方法實現資料和控制項的匹配,我們能操作的只有viewholder和資料,那麼具體如何匹配上去只能在viewholder中去實現,具體如下:
public class commonviewholder 

/*** 拿到乙個viewholder物件

* * @param context

* @param convertview

* @param parent

* @param layoutid

* @param position

* @return

*/public static commonviewholder get(context context, view convertview,

viewgroup parent, int layoutid, int position)

return (commonviewholder) convertview.gettag();

} public view getconvertview()

/*** 通過控制項的id獲取對於的控制項,如果沒有則加入views

* * @param viewid

* @return

*/public t getview(int viewid)

return (t) view;

} /**

* 為textview設定字串

* * @param viewid

* @param text

* @return

*/public commonviewholder settext(int viewid, string text)

public commonviewholder settext(int viewid, spanned text)

/*** 為imageview設定

* * @param viewid

* @param drawableid

* @return

*/public commonviewholder setimageresource(int viewid, int drawableid)

public commonviewholder setvisibility(int viewid, int visibility)

public commonviewholder setonclicklistener(int viewid, onclicklistener onclicklistener)

/*** 為imageview設定

* * @param viewid

* @param bm

* @return

*/public commonviewholder setimagebitmap(int viewid, bitmap bm)

public int getposition()

對於給控制項填充資料的方法是可以繼續新增的,比如加上網路加在等。

3、最後就是activity中實現了:

adapter = new commonadapter(context, datas, r.layout.item_duanzi) 

};listview.setadapter(adapter);

android adapter 深刻分析

我在剛玩android 時候,對這個adapter很不理解,到底是什麼原理呢?介面卡,哎,只知道setadapter 把引數傳進去,系統就顯示出來了。今天,針對這個東西,我們做個系統詳細的分析 listview載入adapter過程是這樣的 先判斷adapter 有多少資料項,根據這個資料確定有多少...

android recyclerView 更新資料

今天寫東西的時候做搜尋更新recyclerview發現notifydatasetchanged這個方法怎玩都更新不來 log列印的資料list的資料也更新,但是item就是沒變,最後發現adapter每次載入的都是同乙個位址的集合,而自己更新資料時是二個不同位址的集合資料,鑑於此種情況只能使用第三者...

Facebook比Amazon更賺錢也更值錢!

如果我們將facebook與另一家網路巨頭amazon比較,我們會發現facebook甚至比amazon要更賺錢。amazon財報表明,今年前兩個季度營業利潤分別為1.91億美元和3.22億美元,加起來也不過5.13億美元。本週amazon將公布q3財務資料,分析師預計其營業利潤為2.98億美元。接...