给View设置多个Tag

在项目过程中,有时候需要给一个控件设置多个tag的需求,最常见的就是在ListView中的item,如果有数据错乱的行为,最好的办法就是给当前的 view设置tag保存跟它一致的数据,

常见的设置Tag和取tag的方法为

  1. view.setTag(Object);
    view.getTag;

如果要设置多个Tag,此方法也有一个重载的方法

  1. view.setTag(int key,Object object);
    view.getTag(int key);

这个时候某些童鞋就会如此使用

  1. view.setTag(1,object);
    view.getTag(1);

重新Run一下 发现报一下错误

  1. E/AndroidRuntime: FATAL EXCEPTION: main
    Process: cn.vcinema.cinema, PID:6755
    java.lang.IllegalArgumentException:The key must be an application-specific resource id.
    at android.view.View.setTag(View.java:16284)
    at cn.vcinema.cinema.module.adapter.MovieDetailsHolder1.refreshView(MovieDetailsHolder1.java:91)
    at cn.vcinema.cinema.base.BaseHolder.setDate(BaseHolder.java:28)
    at cn.vcinema.cinema.base.MyBaseAdapter.getView(MyBaseAdapter.java:51)
    at cn.vcinema.cinema.widget.flipview.FlipView.getView(FlipView.java:477)
    at cn.vcinema.cinema.widget.flipview.FlipView.fillPageForIndex(FlipView.java:398)
    at cn.vcinema.cinema.widget.flipview.FlipView.setFlipDistance(FlipView.java:383)
    at cn.vcinema.cinema.widget.flipview.FlipView.setAdapter(FlipView.java:1123)
    at cn.vcinema.cinema.module.ui.MovieDetailsFragment.setData(MovieDetailsFragment.java:129)
    at cn.vcinema.cinema.presenter.MovieDetailsPresenter$1.onResponse(MovieDetailsPresenter.java:61)
    at retrofit.ExecutorCallAdapterFactory$ExecutorCallback$1.run(ExecutorCallAdapterFactory.java:86)
    at android.os.Handler.handleCallback(Handler.java:733)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5065)
    at java.lang.reflect.Method.invokeNative(NativeMethod)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
    at dalvik.system.NativeStart.main(NativeMethod)

这个key必须是从Resource中得到,也就是说,必须是从 R文件 中应用的格式

所以,我们必须按照规则去使用

  1. 在res/value/attr.xml中创建两个item,如果没attr.xml则创建这个文件

    1. <item type="id" name="tag_first"/>
      <item type="id" name="tag_second"/>

  2. key直接引用attr文件中创建的id

    1. view.setTag(R.id.tag_first,object);
      view.getTag(R.id.tag_first);

好啦,基本的使用到这里就结束了,如果有什么问题希望大家积极留言!分享,是希望更多的人少走弯路!

时间: 2024-11-06 05:23:29

给View设置多个Tag的相关文章

android中如何正确的设置view的多个tag值

在android开发过程中,我们经常会用到view.setTag(object)这个方法,特别是在ListView的自定义的adapter中复用view的时候.同时,view还提供了设置多个tag数据的方法,即view.setTag(int,Object),其中这个int值需要设置正确,不然这个方法会报错了.让我们来看看怎么设置这个值.先看结果: 从eclipse打印的log可以看出,我设置了gridview的4种不同类型的tag值.再来看看代码. package com.androidtest

ASP.net MVC4 View设置Html代码显示为文本字符问题

问题描述: 在ASP.net MVC4 框架下,在后台ViewBag上设置连接属性 ViewBag.link = "<a href='/'>"+DisplayName+"</a>"; 前台输出时使用 <span>@ViewBag.link</span> 页面上显示的内容变成了 <a href='/'>"+DisplayName+"</a> 没有做成链接. 修改方法: 前台输出

view设置成圆角

有时候我们需要把图片.textview等view设置成圆角: 需要Core Graphics框架 头文件: #import <QuartzCore/QuartzCore.h> code: view.layer.borderWidth = 1; view.layer.cornerRadius = 6; view.layer.masksToBounds = YES; view设置成圆角,布布扣,bubuko.com

尽量将View设置为Opaque,iOS开发技巧

转自:http://www.tiboo.cn/dianzijie/b1837169/iOS设备都具有一定的局限性,开发者只能力求使其不断趋于完美.每一阶段的iOS开发都与遇到很多的问题,开发者和专家也在不断总结经验,与大家一起分享心得和体会.下面是一点开发技巧,希望对大家有帮助.要注意,首先尽量将view设置为Opaque,如果view是不透明的,那么应该将其opaque属性设置为YES. 为什么要这样做呢?其实是有一定的原因的,一起来看一下.这样设置ios可以让系统以最优的方式来绘制view.

storyboard或者Xib给View设置边框属性(颜色,宽度,圆角)

纯代码设置Button或者其他View的边框属性 例: UIView* view = [[UIView alloc]init]; view.layer.borderWidth = 2.0; view.layer.masksToBounds = YES; view.layer.cornerRadius = 5.0; view.layer.borderColor = [UIColorredColor].CGColor; 以下提供自定义控件的时候,使用Xib,或者用sb来进行布局,那么这时候怎么来使用

获取res/values/color中色值的方法,给view设置背景

我们一般会把界面上展示的颜色抽取到res/values/color中,这样方便的获取,也方便同意管理. 那么我们怎样获取color文件中的色值,并且给我iview设置背景的颜色呢. 第一种: 如果你在color中是这样写的,<color name="item1">#eed776</color> 那么在给view色值背景的时候,应该这样获取 view.setBackgroundColor(context.getResources().getColor(R.colo

x86终端登录horizon view设置

x86终端登录horizon view设置点. 包括终端c盘写保护开启,包括开机自动登录,包括删除普通用户启用administrator,保证administrator可以自动登录.禁用ctrl+alt+del中的一些选项,隐藏horizon view标题栏.

android给View设置上下左右边框

给View控件设置边框,可以动态设置上下左右.通过布局文件就能搞定 1.在drawable文件夹下新建一个shape_main_list_bg.xml文件 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- This is the main color --> <item> <shape> <!--    边框颜色 -->

DNS的view设置

在实际的网络应用中,我们有时希望对于同一个Domain Name能够根据不同的请求IP 地址/区域,解析到不同的对应IP地址,比如:有时对于企业内部网络和外部网络希望对同一域名解析到不同的IP地址以达到安全目的或者应用目的,又比如为了解决中国南北方电信/网通互访速度差异问题,您也会希望电信用户解析到的域名IP是位于电信网络中的服务器,网通用户亦然,使用户能够访问到临近的最快的服务器. 而这些应用都可以通过对DNS的简单配置达到,使用DNS达到这一目的有以下的优点: l  低成本-无需添加任何专用