通常我们是用findViewById()方法来取得我们要使用的View控件,不过除了这一种方法之处 ,我们还可以用View中的setTag(Onbect)给View添加一个格外的数据,再用getTag()获取到对应的View。setTag()和getTag()方法常用在处理多个相同的View时,比如我们有要对几个Button添加点击事件,我们除了可以用view.getId()来区分Button,也可以给Button设置Tag来进行区分。如:

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对象,存在对象转化 问题。

View的setTag()与getTag()方法使用的更多相关文章

  1. View的setTag和getTag方法

    ---恢复内容开始--- public View getView(int position, View convertView, ViewGroup parent) { Msg msg =getIte ...

  2. view中的setTag和getTag方法的理解

    下面是一段自定义适配器中的getView方法,其中使用了view的一个setTag和getTag方法 View中的setTag(Onbect)表示给View添加一个格外的数据(相当于缓存),以后可以用 ...

  3. View 的setTag() 和 getTag()

    View 的setTag() 和 getTag()ImageView.setTag(""); 就是当多个ImageView用到一个监听器时,能触发不同的情况,是View的方法 Ad ...

  4. View的setTag和getTag使用

    在listview 优化其中,会使用到setTag()以及getTag()方法 代码例如以下: @Override public View getView(int position, View con ...

  5. android:View的setTag和getTag使用

    1.用于区分非常多类似的View 比如: button1.setOnClickListener(new OnClickListener ... ); button2.setOnClickListene ...

  6. view的setTag() 和 getTag()应用 (转)

    原文地址:http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个 ...

  7. android:View的setTag和getTag

    Adapter 有个getView方法,可以使用setTag把查找的view缓存起来方便多次重用 public View getView(int position, View convertView, ...

  8. view的setTag() 和 getTag()应用 ViewHolder

    转自 http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外 ...

  9. Android 自定义 view(四)—— onMeasure 方法理解

    前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...

随机推荐

  1. 进制转化之递归 && 栈

    将10进制转换成2进制,是除以2得到的余数,再倒序排列,这可以用递归实现,也可以用数据结构——栈实现. 先看递归实现: #include<stdio.h> void to_two(int ...

  2. centos修改ip mac等

    CentOS修改mac http://www.haowlan.com/jishuluntan/488.html CentOS 修改IP地址, DNS, 网关 http://www.21andy.com ...

  3. Log4php 使用心得

    使用log4php 记录系统日志: 1.自动拦截php报出的错误,写日志 2.手动打印错误 set_error_handler('captureNormal',E_ERROR | E_PARSE); ...

  4. VBA学习笔记(6)--抽取第一列中叫“虹虹”的个人信息

    说明(2017.3.25): 1. 知识点为dim arr2(1 to 1000, 1 to 4)先定义一个足够大的二维数组,不然后面需要transpose转置成一维数组. '抽取列表中叫“虹虹”的所 ...

  5. Java类型的生命周期

    以上就是我今天没有总结学习类加载器时候对类加载器仅有的知识,虽然有个大概印象,但是还是有点模糊.今天一口气总结一下,参考文献我就不列举了.本文不生产知识,只是知识的搬运工. 静态.class文件到内存 ...

  6. C语言 · 十六进制转八进制

    基础练习 十六进制转八进制   时间限制:1.0s   内存限制:512.0MB        锦囊1: 使用二进制.   问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的 ...

  7. cat /etc/init.d/nfs 这句话看不懂

    if status rpc.mountd > /dev/null ; then  exit 0 fi Linux非root用户程序使用小于1024端口   在Linux下,默认端口1024下的是 ...

  8. JSON教程

    一.什么是JSON 1.JSON指的是JavaScript对象表示法(JavaScript Object Notation). 2.JSON是轻量级的文本数据交换格式,比XML更小.更快.更易解析. ...

  9. ASP.NET MVC 使用 Datatables (2)

    在服务器端实现分页,排序,获取当前页面数据 在上篇的基础上进行改造(datatables的客户端实现) 1.修改View页面代码如下: <div class="row"> ...

  10. Ubuntu之音效调节

    sudo add-apt-repository ppa:nilarimogard/webupd8 sudo apt-get update sudo apt-get install pulseaudio ...