Android之:View的setTag()與getTag()方法使用

來源:互聯網
上載者:User

標籤:android開發   tag   

  通常我們是用findViewById()方法來取得我們要使用的View控制項,不過除了這一種方法之處 ,我們還可以用View中的setTag(Onbect)給View添加一個格外的資料,再用getTag()擷取到對應的View。setTag()和getTag()方法常用在處理多個相同的View時,比如我們有要對幾個Button添加點擊事件,我們除了可以用view.getId()來區分Button,也可以給Button設定Tag來進行區分。如:

public class TagTestActivity extends Activity implements OnClickListener {
private Button tagBtn2,tagBtn3,tagBtn4;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
dealBtnsListeners();
}
private void initViews() {
tagBtn2=(Button) findViewById(R.id.tag_btn_2);
tagBtn3=(Button) findViewById(R.id.tag_btn_3);
tagBtn4=(Button) findViewById(R.id.tag_btn_4);
}
private void dealBtnsListeners() {
tagBtn2.setOnClickListener(this);
tagBtn3.setOnClickListener(this);
tagBtn4.setOnClickListener(this);
tagBtn2.setTag(2);
tagBtn3.setTag(3);
tagBtn4.setTag(4);
}
@Override
public void onClick(View v) {
//一般我們根據控制項的id來判斷是哪個Button被點擊,這裡我們用getTag()來判斷
int btnId=(int) v.getTag();
switch (btnId) {
case 2:
Toast.makeText(this, "點擊Tag為2的Button", 3000).show();
break;
case 3:
Toast.makeText(this, "點擊Tag為3的Button", 3000).show();
break;
case 4:
Toast.makeText(this, "點擊Tag為4的Button", 3000).show();
break;
default:
break;
}
}
}

但是Tag最常用的地方並不在上面所講的。用過ListView的夥伴們對Tag肯定不陌生。為了提高程式效能,我們在給ListView寫適配器Adapter的時候,我們就要用到Tag,下面的代碼大家肯定有過啦:

static class ViewHolder {  
   private TextView tagTv01;  
   private  TextView tagTv02;  
}  
 
public View getView(int position, View convertView, ViewGroup parent) {  
   if (convertView == null) {  
       LayoutInflater inflater = mContext.getLayoutInflater();  
       convertView = inflater.inflate(R.layout.item_tag, null);  
       ViewHolder vh = new ViewHolder();  
       vh.tagTv01 = (TextView)convertView.findViewById(R.id.tagTv01);  
       vh.tagTv02 = (TextView)convertView.findViewById(R.id.tagTv01);  
       convertView.setTag(vh);  
   }  else{

           vh=(ViewHolder) convertView.getTag();

    }
       //添加資料........  
}  

     除了以上的兩種 情況,我們通常不建議用setTag()和getTag(),主要是考慮到代碼的可讀性,另外就是setTag(Objcet)中傳的是Object對象,存在對象轉化 問題。

Android之:View的setTag()與getTag()方法使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.