View的setTag()与getTag()方法使用
通常我们是用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()方法使用的更多相关文章
- View的setTag和getTag方法
---恢复内容开始--- public View getView(int position, View convertView, ViewGroup parent) { Msg msg =getIte ...
- view中的setTag和getTag方法的理解
下面是一段自定义适配器中的getView方法,其中使用了view的一个setTag和getTag方法 View中的setTag(Onbect)表示给View添加一个格外的数据(相当于缓存),以后可以用 ...
- View 的setTag() 和 getTag()
View 的setTag() 和 getTag()ImageView.setTag(""); 就是当多个ImageView用到一个监听器时,能触发不同的情况,是View的方法 Ad ...
- View的setTag和getTag使用
在listview 优化其中,会使用到setTag()以及getTag()方法 代码例如以下: @Override public View getView(int position, View con ...
- android:View的setTag和getTag使用
1.用于区分非常多类似的View 比如: button1.setOnClickListener(new OnClickListener ... ); button2.setOnClickListene ...
- view的setTag() 和 getTag()应用 (转)
原文地址:http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个 ...
- android:View的setTag和getTag
Adapter 有个getView方法,可以使用setTag把查找的view缓存起来方便多次重用 public View getView(int position, View convertView, ...
- view的setTag() 和 getTag()应用 ViewHolder
转自 http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外 ...
- Android 自定义 view(四)—— onMeasure 方法理解
前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...
随机推荐
- kmp返回头位置的模板
#include<iostream> #include<stdio.h> #include<string.h> using namespace std; char ...
- dp之二维背包poj1837(天平问题 推荐)
题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长 -15~~15)上,并使得天平平衡的方法数..... ...
- MFC中Carray的使用
CArray 需要包含的头文件 <afxtempl.h> CArray类支持与C arrays相似的数组,但是必要时可以动态压缩并扩展.数组索引从0开始.可以决定是固定数组上界还是允许当添 ...
- 完成wamp安装后Mysql配置记录
注意:下面如没有特殊说明,默认都是修改my.ini配置,修改完配置需要重启mysql服务. 1.安装完wamp后输入命令有乱码提示: 运行mysql命令时,出现的错误提示是乱码 : ERROR ...
- Postgres数据库备份与还原命令
备份 pg_dump.exe -c -b -E UTF8 -U postgres -h 127.0.0.1 -p 5432 -f "f:\testdb001.bak" testdb ...
- drupal7请求异常,执行时间过长的解决方法
drupal7请求错误,执行时间过长的解决办法 根据你的系统或网络设置Drupal不能读取网页,造成功能缺失.可能是web服务器配置或PHP设置引起的,可用更新.获取更新源.使用OpenID登 录或使 ...
- Hbase rowkey设计一
转自 http://blog.csdn.net/lifuxiangcaohui/article/details/40621067 hbase所谓的三维有序存储的三维是指:rowkey(行主键),col ...
- 各个层次的gcc警告
http://blog.csdn.net/lizzywu/article/details/9419145 各个层次的gcc警告从上到下覆盖 变量(代码)级:指定某个变量警告 int a __attri ...
- Hibernate Query Language查询:
Hibernate Query Language查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供 ...
- 【转】C#调用WebService实例和开发
一.基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是 ...