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 ...
随机推荐
- binutils工具集之---nm
nm用于列出程序文件中的符号.建立nmtest.c文件: #include<time.h> int global1; ; static int static_global1; ; void ...
- js JSON对象与字符串相互转换
从服务器接收到数据一般是字符串的形式.如果是JSON格式的字符串,就需要先将其转换成JSON对象.JSON对象在浏览器输出为objcet,我们看不到具体的数据.所以将JSON对象转换成字符串. 下面将 ...
- Jar包版本查看方法
原文: https://blog.csdn.net/u011287511/article/details/66973559 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目 ...
- java 关于同步异步的理解
经常看到介绍 ArrayList 和HashMap是异步,Vector和HashTable是同步,这里同步是线程安全的,异步不是线程安全的,举例说明: 当创建一个Vector对象时候, Vector ...
- linux 共享内存shm_open实现进程间大数据交互
linux 共享内存shm_open实现进程间大数据交互 read.c #include <sys/types.h> #include <sys/stat.h> #includ ...
- Android——列表视图 ListView(一)Arrayadapter
一.ArrayAdapter 只显示文字 activitylistview_layout.xml <?xml version="1.0" encoding="utf ...
- YAML的使用
YAML 语言教程 编程免不了要写配置文件,怎么写配置也是一门学问. YAML 是专门用来写配置文件的语言,非常简洁和强大,远 ...
- jsp页面的el表达式取数据
在jsp页面去Id时候要照上面的方式取,不能照下面的方式取:
- MFC中的UpdateData()
UpdateData()是MFC的窗口函数,用来刷新数据的,参数只有一个,默认为TRUE 简单的说: UpdateData(TRUE) == 将控件的值赋值给成员变量, UpdateData(FALS ...
- UI标签库专题十一:JEECG智能开发平台 DictSelect (数据字典下拉选择框)
1. DictSelect (数据字典下拉选择框) 1.1. 參数 属性名 类型 描写叙述 是否必须 默认值 typeGroupCode string 字典分组编码 是 null field s ...