android應用中一般都存在大量的列表展示,幾乎全部用到了adapter,在adapter中每次去findviewbyid()找到view總是很長的篇幅,也很麻煩,於是就想有沒有乙個辦法只需提供控制項id和我需要做的操作,然後就能完成adapter的適配,在網上查了一些資料後終於完成了,自己總結一下:
1、首先肯定需要乙個基類,來完成其所有子類的都需要完成的事情,對於adapter來說無外乎就是建立concerview,viewhodler等,關鍵在於getview中
2、從上面的comadapter來看,viewholder需要實現的功能為根據layoutid返回concerview,同時再看抽象方法convert()的引數 為viewholder 和 資料來源,我們實現的子類去重寫這個方法實現資料和控制項的匹配,我們能操作的只有viewholder和資料,那麼具體如何匹配上去只能在viewholder中去實現,具體如下: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)
}
對於給控制項填充資料的方法是可以繼續新增的,比如加上網路加在等。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億美元。接...