1. 程式人生 > >ConvertView和ViewHolder的個人理解

ConvertView和ViewHolder的個人理解

關於ConvertView和viewHolder我個人的理解記錄一下方便記憶。

ConvertView :
顧名思義,是一個能夠重複使用的View。當用戶將手機滑動,處於螢幕最上面的item被移出,此時android回收系統會將這個View儲存起來,以便下一個從底部更新出來的item複用,這樣就可減少由於每次getView()都要新建View的記憶體消耗。
ViewHoler:
ViewHolder可以看成是一個與ConvertView相互依存的容器,它內部儲存了ConvertView所建立的控制元件,ConvertView通過.setTag()把自身建立的控制元件儲存到ViewHolder中,並與之繫結,後續需要更新ConvertView資料時,可直接通過ViewHolder來進行,從而省去了每次都要findViewById()所消耗的記憶體。
@Override
	public View getView(int position, View convertview, ViewGroup arg2) {
		// TODO Auto-generated method stub
		ViewHolder holder=null;
		if(convertview==null){
			convertview=inflater.inflate(R.layout.item, null);
			
			holder=new ViewHolder();
			holder.name=(TextView) convertview.findViewById(R.id.name);
			holder.des=(TextView) convertview.findViewById(R.id.des);
			holder.icon=(ImageView) convertview.findViewById(R.id.iv);
			convertview.setTag(holder);
		}else{
			holder=(ViewHolder) convertview.getTag();
			
		}
	    Log.i("info", "names[position]:"+names[position]);
	    holder.name.setText(names[position]);
	    holder.des.setText(des[position]);
	    holder.icon.setImageResource(icon[position]);
	
		
		return convertview;
	}
	
   private static  class  ViewHolder{
	   
	   TextView  name ;
	   TextView des;
	   ImageView icon;
	  
	   
   }

相關推薦

ConvertViewViewHolder個人理解

關於ConvertView和viewHolder我個人的理解記錄一下方便記憶。 ConvertView : 顧名思義,是一個能夠重複使用的View。當用戶將手機滑動,處於螢幕最上面的item被移出,此時android回收系統會將這個View儲存起來,以便下一個從底部更新出

解決ListView滾動複用convertviewViewHolder資料填充錯亂

我說下我的理解,最可能出現重複的情況就是getView(int position, View convertView, ViewGroup parent)中的convertview利用的情況,由於getview的時候,listview自身會複用已存在的item,即重用最先

runtimerunloop的個人理解

二義性 程序 個人理解 cto 就會 語言 vps 主動 啟動不了 RunTime簡稱運行時。就是系統在運行的時候的一些機制,其中最主要的是消息機制。對於C語言,函數的調用在編譯的時候會決定調用哪個函數( C語言的函數調用請看這裏 )。編譯完成之後直接順序執行,無任何二義性

MVC三層架構的個人理解

mod bll 得到 www 中間 物理 交互 .cn fonts 一直以為MVC就是三層,最近通過.net的學習才知道,三層架構是指表示層(UI),業務邏輯層(BLL)和數據訪問層(DAL) ,UI負責與用戶的交互,DAL負責訪問數據(其實是操作model,model對應

jsp九個內置對象四個作用域的個人理解

服務 應對 有效 bsp 一個用戶 返回 out ica page jsp中九大內置對象和四個作用域:(application,應用程序對象session,會話對象request,請求對象response,響應對象page,當前頁面對象pageContext,頁面上下文對象

rsync 配置及個人理解

rsyncrsync 是一款開源的,快速的,多功能的。可實現全量和增量的本地或遠程數據同步的優秀工具。rsync的工作場景: 1》兩臺服務器之間的數據同步,cron+rsync 2》把所有的客戶服務器數據同步到備份服務器rsync的工作方式: 1》單個主機本地之間的數據傳輸(類似於cp命令)

關於js的同步非同步,個人理解

之前對JS的同步和非同步一直搞不清楚,今天看了些文章,談談自己的理解。 非同步函式往往是有等待性質的函式,主流程在執行到等待的時候,為了提高效率,就把這個函式掛起了,放進一個等待的佇列。接著主程式繼續執行後面的函式。 一直執行到主程式佇列裡的函式執行完畢,這時主程式再去查詢等待佇列裡哪個程式等待

關於正向代理反向代理的個人理解

因為工作中有接觸到nginx代理伺服器部署相關的工作,一開始我是拒絕的,後來也是上網查詢各種大佬的解釋才漸漸頓悟,下面居來總結一下我個人歸納出來的適合新手理解的說明。 就這張圖做一下說明,圖1為正向代理,客戶端發起一個請求,假設訪問某個網址,通常是通過域名訪問,這個域名通常也會指向某個IP

我的mqtt協議和emqttd開源專案個人理解(25) - 協議裡面Clean Session為01的區別

一、基本概念 Session 會話 定義 定義:某個客戶端(由ClientID作為標識)和某個伺服器之間的邏輯層面的通訊 生命週期(存在時間):會話 >= 網路連線 CleanSession 標記 在Connect時,由客戶端設定  0 —

cocos中的觀察者模式 以及"點選事件"的註冊分發(個人理解

一、控制元件的點選事件註冊與完成 在學習cocos引擎時,感覺觸控事件用的比較頻繁。 於是對各種觸控事件做一些小小的總結: cocos中的控制元件(按鈕,精靈,各種容器等)。在實際開發中發現他們都是可以新增點選事件的,可以通過設定setTouchEnabled()來開啟點

Django 實現搜尋功能、分頁功能個人理解

最近在研究django的功能,分頁功能根據官方文件可以簡單的實現,但是如果配合上搜尋,對搜尋結果分頁就要稍微費點周折。 話不多少,先上程式碼。 一、搜尋配合分頁 # 獲取、判斷並封裝關keyword鍵搜尋 kw = request.GET.get("keyword",

java中關於繼承、多型封裝的個人理解

super:子類中呼叫父類的普通方法或成員變數   構造方法的第一句總是:super(...)來呼叫父類相應的構造方法。流程是:先向上追溯到Object,然後再依次向下執行類的初始化塊和構造方法,直到當前子類為止。(注:靜態初始化塊呼叫順序,與構造方法呼叫順序一樣) java的三

關於子類訪問修改父類屬性值的網上答案搜查+個人理解

java 怎樣永久改變父類中公有屬性的值 不太明白你要說什麼,類中的屬性一般都是private?,保證封裝性,如果你要用public?,也沒任何問題。你要在子類中該父類的屬性,不是有getter和setter?的方式改啊。 格外說一句面向物件是把所有的都看成一個物件,你肯定是子類例項化,傳參的時候可以用g

棧的個人理解

在瞭解堆和棧的概念之前,首先明確下資料型別的分類。 基本資料型別:Number、String、Boolean、undefined、null 引用資料型別:Object 其中基本資料型別存放在棧中,而

個人對於陣列緩衝區的理解

參考文章:http://blog.csdn.net/zhangyuan19880606/article/details/51162096       概念上,緩衝區是包在一個物件內的基本資料元素陣列。Buffer類相比一個簡單陣列的優點是它將關於資料的資料內容和

InnoDB中事務隔離級別鎖的關係 思路?個人理解

1 資料庫遵循兩段鎖協議,加鎖階段和解鎖階段,在對任何資料進行讀操作之前要申請並獲得S鎖,在寫操作之前要申請並獲得X鎖 2 事務中的加鎖方式,事務的四種隔離級別,未提交讀,已提交讀(RC),可重複讀(RR),可序列化,各種隔離級別

個人理解關於GRULSTM之間的區別聯絡

首先通過公式我認為GRU(“Learning Phrase Representations using RNN EncoderDecoder for Statistical Machine Translation”)裡的h與LSTM裡的C是非常類似的,與之相對應的是GRU裡的

JSONObjectJSONArray總結,個人理解

本人Android新手,如有缺漏,請高手們指導指導 1.JSON簡介 JSON指的是JavaScript物件表示法(JavaScript Object Notation),它是一種輕量級的文字交換格

Linux 對處理器實體地址/虛擬地址ioremap函式的個人理解

寫在前面 在Linux驅動學習過程中,遇到了ioremap這個函式,引數是phy_addr,返回值是虛擬地址。 linux啟動以後,由於mmu的存在,想要控制暫存器,要找到暫存器實體地址的虛擬地址對映(聽著比較拗口)。 前幾天遇到了一個問題,手上的板子是

關於whiledo while 的個人理解

才會 進入 第一次 ++ pri 運行 system 一次 spa 先上代碼 int x=425; System.out.println("循環開始,我的初始值為:x="+x); //425 do { System.out.println("進