android:View的setTag和getTag使用
16lz
2021-12-04
分类:【android】 2014-09-18 22:22 151人阅读 评论(0) 收藏 举报
1.用于区分很多相似的View
例如:
[java] view plain copy
- button1.setOnClickListener(newOnClickListener...);
- button2.setOnClickListener(newOnClickListener...);
它们可能执行相似的逻辑,但你必须分别为两个Button设置两个独立的OnClick事件,
[java] view plain copy
- publicvoidonClick(Viewv){
- doAction(1);//1forbutton1,2forbutton2,etc.
- }
之所以这样做,因为onClick只有一个参数View。我们可以通过setTag和getTag来完成:
[java] view plain copy
- button1.setTag(1);
- button2.setTag(2);
我们可以将两个button设置同一个OnClickListener,比如:
[java] view plain copy
- listener=newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- doAction(v.getTag());
- }
- };
这样,就能够通过getTag区分。
2.用于ListView的复用
我们自己写自定义adapter的时候,通常会使用它,比如:
[java] view plain copy
- staticclassViewHolder{
- TextViewtvPost;
- TextViewtvDate;
- ImageViewthumb;
- }
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- if(convertView==null){
- LayoutInflaterinflater=myContext.getLayoutInflater();
- convertView=inflater.inflate(R.layout.postitem,null);
- ViewHoldervh=newViewHolder();
- vh.tvPost=(TextView)convertView.findViewById(R.id.postTitleLabel);
- vh.tvDate=(TextView)convertView.findViewById(R.id.postDateLabel);
- vh.thumb=(ImageView)convertView.findViewById(R.id.postThumb);
- convertView.setTag(vh);
- }
- ....................
- }
3.注意:
除了上述情况以外,我们尽量不要直接使用,原因:
1.代码可读性:会给其他的程序员造成困扰
2.由于setTag和getTag设置的是一个Object对象,可能会出现类的转换异常
不过,android4.0以后,有一个更好的方法:setTag(int key, Object tag)可以通过类似<k,v>键值对的方式存取。
更多相关文章
- Android之音频录音
- android Preference之android:dependency(列表依赖关系)
- android:configChanges="orientation|keyboardHidden"的使用
- Android全屏--两种activity的实现方式
- android闹钟
- Android(安卓)Theme的使用
- Android(安卓)访问权限设置
- Android-设置手机桌面
- LinearLayout按下(pressed)或获取焦点(focused)时背景设置不同颜