首页 > 代码库 > View的setTag和getTag使用
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使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。