1.ViewHolder的解釋:
(1).只是一個靜態類,不是Android的API方法。
(2).它的做用就在於減小沒必要要的調用findViewById,而後把對底下的控件引用存在ViewHolder裏面,再在View.setTag(holder)把它放在view裏,下次就能夠直接取了。
2.convertView中的TAG:
(1).Tag不像ID是用標示view的。Tag從本質上來說是就是相關聯的view的額外的信息。它們常常用來存儲一些view的數據,這樣作很是方便而不用存入另外的單獨結構。
(2). 首先咱們要知道setTag方法是幹什麼的:他是給View對象的一個標籤。標籤能夠是任何內容,咱們這裏把他設置成了一個對象,由於咱們是把vlist2.xml的元素抽象出來成爲一個類ViewHolder,用了setTag,這個標籤就是ViewHolder實例化後對象的一個屬性。咱們以後對於ViewHolder實例化的對象holder的操做,都會由於java的引用機制而一直存活並改變convertView的內容,而不是每次都是去new一個。咱們就這樣達到的重用。
(3).對於其餘View的Tag使用
咱們能夠對全部的View對象進行操做,下面舉例說一個View的子類button對於tag的一個使用。
直接貼代碼了:java
public class ButtonTagTestActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button1 = (Button) findViewById(R.id.button1); Button button2 = (Button) findViewById(R.id.button2); Button button3 = (Button) findViewById(R.id.button3); button1.setTag(1); button2.setTag(2); button3.setTag(3); button1.setOnClickListener(this); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub int tag = (Integer) arg0.getTag(); switch (tag) { case 1: { Toast.makeText(this, 我是button1, Toast.LENGTH_LONG).show(); break; } case 2: { Toast.makeText(this, 我是button2, Toast.LENGTH_LONG).show(); break; } case 3: { Toast.makeText(this, 我是button3, Toast.LENGTH_LONG).show(); break; } default: { break; } } } }
這個例子是點擊界面上的3個button而後會顯示用戶點擊的按鈕。咱們的程序是實現了頁面全局監聽,在監聽前設置了每一個button的tag,以後咱們在switch的時候,使用getTag取出的標籤來看是什麼操做。
原文詳情地址:http://Git.oschina.NET/zzunet...
wemall doraemonAndroid app商城詳情地址:http://www.koahub.com/home/pr...
wemall官網地址:http://www.wemallshop.com
wemall 開源微商城 ,微信商城,商城源碼,三級分銷,微生鮮,微水果,微外賣,微訂餐---專業的o2o系統微信