Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android setTag()與getTag(),與set多個setTag()

Android setTag()與getTag(),與set多個setTag()

編輯:關於Android編程

首先我們要知道setTag方法是干什麼的,SDK解釋為

Tags

Unlike IDs, tags are not used to identify views. Tags are essentially an extra piece of information that can be associated with a view. They are most often used as a convenience to store data related to views in the views themselves rather than by putting them in a separate structure.

Tag不像ID是用標示view的。Tag從本質上來講是就是相關聯的view的額外的信息。

它們經常用來存儲一些view的數據,這樣做非常方便而不用存入另外的單獨結構。

Tag有一個特點,綁定數據到指定控件(view),而不顯示出來。

setTag是android的view類中很有用的一個方法,

與setId()不同,findViewById找到的是對象本身。

而setTag(),取出來的是對象所指向的對象。



在同一個類中,存取數據很方便,不用數據庫建庫,

也比sharePreference更節約內存。

setTag(Object tag)方法比較簡單


比如

TextView tvExecutor = (TextView)findViewById(R.id.t);

tvExecutor.setTag(selectedUserMap);


這個selectedUserMap

可以使Map selectedUserMap這個對象。

也可以是LinkedList mList 這個對象。

可以存儲各種臨時數據,但是還不能稱其為存儲方式。

在開發中,我們可以使用setTag(),getTag(),存取數據。

可不可以一個對象,設置多個Tag呢?答案是肯定的


在res/values/strings.xml中添加

在activity中,使用的時候寫成
tvExecutor.setTag(R.id.tag_a, "逗比");
tvExecutor.setTag(R.id.tag_b, "2貨");

其實用的最多的是convertView中

convertView中的TAG

1. 對於使用了LayoutInflater對象進行View擴充的Tag的使用

在之前,在adapter中,我們在getView中是這麼些的代碼:

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

holder = new ViewHolder();

convertView = inflater.inflate(R.layout.vlist2, null);

holder.img = (ImageView) convertView.findViewById(R.id.img);

holder.title = (TextView) convertView.findViewById(R.id.title);

holder.info = (TextView)

convertView.findViewById(R.id.info);

// setTag的妙用

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

……略

}

例子3 在onClick點擊事件中,使用tag

setTag()/getTag()

 View中的setTag(Onbect)表示給View添加一個格外的數據,以後可以用getTag()將這個數據取出來。

  可以用在多個Button添加一個監聽器,每個Button都設置不同的setTag。這個監聽器就通過getTag來分辨是哪個Button 被按下。

  import android.app.Activity;

  import android.os.Bundle;

  import android.view.View;

  import android.widget.Button;

  public class Main extends Activity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  Button button1 = (Button) findViewById(R.id.Button01);

  Button button2 = (Button) findViewById(R.id.Button02);

  Button button3 = (Button) findViewById(R.id.Button03);

  Button button4 = (Button) findViewById(R.id.Button04);

  MyListener listener = new MyListener();

  button1.setTag(1);

  button1.setOnClickListener(listener);

  button2.setTag(2);

  button2.setOnClickListener(listener);

  button3.setTag(3);

  button3.setOnClickListener(listener);

  button4.setTag(4);

  button4.setOnClickListener(listener);

  }

  public class MyListener implements View.OnClickListener {

  @Override

  public void onClick(View v) {

  int tag = (Integer) v.getTag();

  switch (tag) {

  case 1:

  System.out.println("button1 click");

  break;

  case 2:

  System.out.println("button2 click");

  break;

  case 3:

  System.out.println("button3 click");

  break;

  case 4:

  System.out.println("button4 click");

  break;

  }

  }

  }

  }




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved