View的setTag和getTag使用

Posted llguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法把參数传递过去就能够

以上是关于View的setTag和getTag使用的主要内容,如果未能解决你的问题,请参考以下文章

android中View 的 setTag()和getTag()方法,它们是用来干什么的?

关于Android的setTag()方法和getTag()的一个问题

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

setTag,getTage复用

在布局 XML 中编辑 android:tag

如何在android的按钮中存储元数据?