给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);
好啦,基本的使用到这里就结束了,如果有什么问题希望大家积极留言!分享,是希望更多的人少走弯路!

 



 

转载于:https://www.cnblogs.com/Android-MR-wang/p/5088045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值