android:View的setTag和getTag使用

來源:互聯網
上載者:User

標籤:android   style   color   io   os   使用   java   ar   strong   

1.用於區分很多相似的View

例如:

button1.setOnClickListener(new OnClickListener ... );button2.setOnClickListener(new OnClickListener ... );

它們可能執行相似的邏輯,但你必須分別為兩個Button設定兩個獨立的OnClick事件,

public void onClick(View v) {    doAction(1); // 1 for button1, 2 for button2, etc.}

之所以這樣做,因為onClick只有一個參數View。我們可以通過setTag和getTag來完成:

button1.setTag(1);button2.setTag(2);

我們可以將兩個button設定同一個OnClickListener,比如:

listener = new OnClickListener() {    @Override    public void onClick(View v) {        doAction(v.getTag());    }};

這樣,就能夠通過getTag區分。


2.用於ListView的複用

我們自己寫自訂adapter的時候,通常會使用它,比如:

static class ViewHolder {    TextView tvPost;    TextView tvDate;    ImageView thumb;}public View getView(int position, View convertView, ViewGroup parent) {    if (convertView == null) {        LayoutInflater inflater = myContext.getLayoutInflater();        convertView = inflater.inflate(R.layout.postitem, null);        ViewHolder vh = new ViewHolder();        vh.tvPost = (TextView)convertView.findViewById(R.id.postTitleLabel);        vh.tvDate = (TextView)convertView.findViewById(R.id.postDateLabel);        vh.thumb = (ImageView)convertView.findViewById(R.id.postThumb);        convertView.setTag(vh);    }            ....................}

3.注意:

除了上述情況以外,我們盡量不要直接使用,原因:

1.代碼可讀性:會給其他的程式員造成困擾

2.由於setTag和getTag設定的是一個Object對象,可能會出現類的轉換異常

不過,android4.0以後,有一個更好的方法:setTag(int key, Object tag)可以通過類似<k,v>索引值對的方式存取。


未經允許不得用於商業目的

歡迎加入QQ群討論:android開發聯盟: 272209595

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.