View的setTag和getTag使用

在listview 优化当中,会使用到setTag()以及getTag()方法

代码如下:

@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				ViewHolder viewHolder;
			    if(convertView==null){
			    	viewHolder = new ViewHolder();
			    	convertView = inflater.inflate(R.layout.item, null);
			    	viewHolder.tvAge = (TextView) convertView.findViewById(R.id.tvAge);
			    	viewHolder.tvName = (TextView) convertView.findViewById(R.id.tvName);
			    	convertView.setTag(viewHolder);
			    }else{
			    	viewHolder = (ViewHolder) convertView.getTag();
			    }
			    viewHolder.tvAge.setText("年龄:  "+persons.get(position).age);
			    viewHolder.tvName.setText("年龄:  "+persons.get(position).name);

				return convertView;
			}
		}
		class ViewHolder{
			TextView tvAge;
			TextView tvName;
		}

setTag()方法是在View类中,所以所有的类都可以使用setTag()方法,我们看下View源码中代码:

/**
     * Returns this view's tag.
     *
     * @return the Object stored in this view as a tag
     *
     * @see #setTag(Object)
     * @see #getTag(int)
     */
    @ViewDebug.ExportedProperty
    public Object getTag() {
        return mTag;
    }

    /**
     * Sets the tag associated with this view. A tag can be used to mark
     * a view in its hierarchy and does not have to be unique within the
     * hierarchy. Tags can also be used to store data within a view without
     * resorting to another data structure.
     *
     * @param tag an Object to tag the view with
     *
     * @see #getTag()
     * @see #setTag(int, Object)
     */
    public void setTag(final Object tag) {
        mTag = tag;
    }

    /**
     * Returns the tag associated with this view and the specified key.
     *
     * @param key The key identifying the tag
     *
     * @return the Object stored in this view as a tag
     *
     * @see #setTag(int, Object)
     * @see #getTag()
     */
    public Object getTag(int key) {
        if (mKeyedTags != null) return mKeyedTags.get(key);
        return null;
    }

意思是说给view设置标签,setTag()中设置的Object类,所以getTag()方法要强转,一般是View对象携带什么参数,就可以使用setTag方法把参数传递过去就可以

时间: 2024-11-08 23:56:41

View的setTag和getTag使用的相关文章

View的setTag和getTag方法

---恢复内容开始--- public View getView(int position, View convertView, ViewGroup parent) { Msg msg =getItem(position); View view; ViewHolder viewHolder; if(convertView==null){ view=LayoutInflater.from(getContext()).inflate(resourceId, null); viewHolder = n

Android之:View的setTag()与getTag()方法使用

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

android:View的setTag和getTag使用

1.用于区分很多相似的View 例如: button1.setOnClickListener(new OnClickListener ... ); button2.setOnClickListener(new OnClickListener ... ); 它们可能执行相似的逻辑,但你必须分别为两个Button设置两个独立的OnClick事件, public void onClick(View v) { doAction(1); // 1 for button1, 2 for button2, e

Android中View的setTag与getTag行为理解一例

最近在学Android,看到ListView的Adaptor优化这里遇到一点理解上的困难. 目前流行的优化方法是结合convertView和ViewHolder来优化View的创建和查找,如: public class ViewHolderAdapter extends ArrayAdapter { static class ViewHolder { TextView text1; TextView text2; TextView longtext; } public View getView(

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

转自 http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来. 可以用在多个Button添加一个监听器,每个Button都设置不同的setTag.这个监听器就通过getTag来分辨是哪个Button 被按下. import android.app.Activity; import android.os.Bun

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

原文地址:http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来. 可以用在多个Button添加一个监听器,每个Button都设置不同的setTag.这个监听器就通过getTag来分辨是哪个Button 被按下. Java代码   import android.app.Activity; import and

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

首先我们要知道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 v

Android小白的成长之路-ListView优化提案

在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能. 本文的重点即是从如下几个方面介绍如何对ListView进行优化. 1.convertView重用 利用好 convertView 来重用 View,切忌每次 getView() 都新建.ListView 的核心原理就是重用 View,如果重用 view 不改变宽高,重用V

BaseAdapter中重写getview的心得以及发现convertView回收的机制

转载自:http://blog.csdn.net/pkxiuluo01/article/details/7380974 以前一直在用BaseAdapter,对于其中的getview方法的重写一直不太清楚.今天终于得以有空来探究它的详细机制. 下面先讲讲我遇到的几个问题: 一.View getview(int position, View convertview, ViewGroup parent )中的第二个参数是什么含义: 二.View的SetTag和getTag方法的用途: 先来解决第一个问