多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 【Android開發經驗】ViewHolder到底用什么修飾?static?final?static final?

【Android開發經驗】ViewHolder到底用什么修飾?static?final?static final?

來源:程序員人生   發布時間:2015-02-09 08:34:44 閱讀次數:7342次

轉載請注明出處:http://blog.csdn.net/zhaokaiqiang1992

    現在大家都知道用ViewHolder來實現listview的優化了,但是,ViewHolder到底要用甚么來修飾呢?這類修飾有甚么意義呢?在1個ListView里面,存在多少個VIewHolder實例呢?為何VIewHolder能夠減少findview的次數,優化效力呢?為了弄清楚這個問題,我做了以下測試,測試代碼很簡單,就是下面這些

public class MainActivity extends Activity { public static int itemId = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView listView = new ListView(this); listView.setAdapter(new MyAdapter()); setContentView(listView); } private class MyAdapter extends BaseAdapter { @Override public int getCount() { return 50; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { convertView = getLayoutInflater().inflate(R.layout.item, parent, false); viewHolder = new ViewHolder(); viewHolder.tv = (TextView) convertView.findViewById(R.id.tv); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tv.setText("item" + position); Log.d("TAG", "position=" + position + "---" + viewHolder.toString()); return convertView; } } private class ViewHolder { // private static class ViewHolder { // private final class ViewHolder { // private static final class ViewHolder { private int id; public ViewHolder() { id = itemId; Log.d("TAG", "ViewHolder" + id); itemId++; } TextView tv; @Override public String toString() { return "--------id=" + id; } } }

    我簡單說1下代碼是甚么意思,ViewHolder有1個成員變量id,在toString()使用,用來辨別不同的ViewHolder,在構造函數中,對id進行賦值,itemId是1個靜態變量,每初始化1次就+1,我們可以根據構造函數的打印次數,來計算ViewHolder的實例化次數,根據toString()可以來判斷究竟是使用了哪個ViewHolder。getVIew中的寫法是固定的,下面是測試結果:


    private class ViewHolder修飾,界面內可見的item數量是9個,ViewHolder初始化了10次,以后開始復用ViewHolder。


    private static class ViewHolder修飾,界面內可見的item數量是9個,ViewHolder初始化了10次,以后開始復用ViewHolder。


    private final class ViewHolder修飾,界面內可見的item數量是9個,ViewHolder初始化了10次,以后開始復用ViewHolder。


    private static final class ViewHolder修飾,完全1樣!



    其實1上來我就貼1張圖就ok了,由于這幾種完全1樣,不管用甚么修飾,ViewHolder都會初始化當前界面可見item的數量+1次,和convertView的實例化次數是1樣的,因此,我么不管使用甚么修飾都是沒問題的,也是沒必要的。

    static修飾類,在這里是靜態內部類,其實不是說只存在1個實例,而是可以訪問外部類的靜態變量,final修飾類則是不讓該類繼承,我們這里使用final毫無根據,所以,以后寫ViewHolder的時候,可以不糾結了,加甚么加啊,甚么都不用加!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人午夜在线观看 | 久久国产精品免费 | 国产毛片久久久久久国产毛片 | 精品国产麻豆免费网站 | 欧美福利专区 | 最近最新中文字幕免费1 | 国产精品一国产精品免费 | 日韩欧美高清视频 | 精品一区二区三区中文 | 国产成人综合亚洲欧美在 | 波多结衣一区二区三区 | 中国老头gay高清xxxx | 日韩欧美一区二区精品久久 | 琪琪see色原网中文 琪琪理论影院2018中文版 | 国产免费全部免费观看 | 成人在线观看一区 | 成人午夜视频在线观看 | 欧美一区二区三区成人看不卡 | 亚洲欧洲一区二区三区久久 | 国产精品福利片免费看 | 色xxxx| 真人肉体一级毛片 | 女人18毛片a级毛片免费视频 | 久久精品中文字幕不卡一二区 | 中文字幕一区二区三区有限公司 | 色吊丝永久在线观看最新 | 国产亚洲精品久久精品6 | 伊人俺去久久涩五月综合 | 中文字幕一区久久久久 | 午夜dj影院在线观看免费视频中文 | 亚洲成人精品久久 | 午夜久久久久久 | 另类图片综合 | video18娇小粉嫩极品hd | 无人区理论片手机看片 | 国产国产人在线成免费视频69 | 国产观看精品一区二区三区 | 国产11一12周岁女毛片 | 一区二区三区四区在线播放 | 亚洲都市春色系列小说类型 | 肉动漫在线看 |