Adapter 有个getView方法,可以使用setTag把查找的view缓存起来方便多次重用

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

if (convertView == null) {
               LayoutInflater inflater = (LayoutInflater) mWidgetsSwitchApp
                               .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
               convertView = inflater.inflate(R.layout.app_gallery_item, null);
               vh = new ViewHolder();
               vh.view1 = (ImageView) convertView.findViewById(R.id.view1);
               vh.view2 = (ImageView) convertView.findViewById(R.id.view2);
               vh.view3= (ImageView) convertView.findViewById(R.id.view3);
               vh.view4 = (ImageView) convertView.findViewById(R.id.view4);
               convertView.setTag(vh);
       } else {
               vh = (ViewHolder) convertView.getTag();
       }
//其他的代码可以直接使用 vh.view1、vh.view2、vh.view3 、vh.view4
}

View中的setTag(Object)表示给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; 



}

android:View的setTag和getTag的更多相关文章

  1. View的setTag和getTag方法

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

  2. View 的setTag() 和 getTag()

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

  3. View的setTag()与getTag()方法使用

    通常我们是用findViewById()方法来取得我们要使用的View控件,不过除了这一种方法之处 ,我们还可以用View中的setTag(Onbect)给View添加一个格外的数据,再用getTag ...

  4. android:View的setTag和getTag使用

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

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

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

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

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

  7. View的setTag和getTag使用

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

  8. [Android] View.setTag(key,Object) (java.lang.IllegalArgumentException: The key must be an application-specific resource id.)

    转自: http://blog.csdn.net/brokge/article/details/8536906 setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息 ...

  9. Android setTag()与getTag(),与set多个setTag()

    首先我们要知道setTag方法是干什么的,SDK解释为 Tags Unlike IDs, tags are not used to identify views. Tags are essential ...

随机推荐

  1. python flask安装

    windows环境上,打开命令行,输入pip  list  检查列表中是否安装过flask 安装flask命令:pip install flask 出现Successfully installed等提 ...

  2. hdu5178 尺取

    会爆int /* 给定数轴上一些点对,问有多少点对之间的距离差不超过k 点对排序后尺取法:枚举每个左边界,找到一个右边界使得 */ #include<bits/stdc++.h> #def ...

  3. python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)

    昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...

  4. 步步为营-66-Socket通信

    1.0 版本 1.1 服务器端 using System; using System.Collections.Generic; using System.Linq; using System.Net; ...

  5. java 判断字符串什么编码类型

    public static String getEncoding(String str) { String encode = "GB2312"; try { if (str.equ ...

  6. 实现与JS相同的Des加解密算法【转】

    Java代码 import java.util.ArrayList; import java.util.List; /** * DES加密/解密 * * @Copyright Copyright (c ...

  7. 【noip模拟赛7】上网 线性dp

    描述 假设有n个人要上网,却只有1台电脑可以上网.上网的时间是从1 szw 至 T szw ,szw是sxc,zsx,wl自创的时间单位,至于 szw怎么换算成s,min或h,没有人清楚.依次给出每个 ...

  8. laravel 控制器使用MODEL

    第一步:引入MODEL类 use App\Http\Models\Sysdba; 第二步:使用 $uid = $request->input('uid'); 方法1. $model = new ...

  9. 转载收藏用<meta name="ROBOTS"

    SEO优化meta标签 name="robots" content="index,follow,noodp,noydir"解释 (2012-10-11 10:33:08)转载   SEO优化meta标 ...

  10. cglib动态代理导致注解丢失问题及如何修改注解允许被继承

    现象 SOAService这个bean先后经过两个BeanPostProcessor,会发现代理之后注解就丢失了. 开启了cglib代理 @SpringBootApplication @EnableA ...