View的setTag和getTag使用

来源:互联网 发布:淘宝刷钻一天完成 编辑:程序博客网 时间:2024/04/27 14:30

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

代码如下:

@Overridepublic 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方法把参数传递过去就可以

0 0
原创粉丝点击