setTag ()
是 Android 的 View 類中頗有用的一個方法,能夠用它來給控件附加一些信息,在不少場合下都獲得妙用。咱們能夠看到 setTat() 有兩個方法重載,setTag(Object object)
和 setTag(int key,Object object)
參數類型 都帶有 Object 也就是 能夠保存任何 對象數據。
下面分別介紹下相關使用方法。java
這個方法相對簡單,若是隻須要設置一個 tag,那麼直接調用 setTag(Object tag)
取值:view.getTag();
方法就能夠輕鬆搞定。android
官方的api文檔中提到:api
「 The specified key should be an id declared in the resources of the application to ensure it is unique (see the ID resource type). Keys identified as belonging to the Android framework or not associated with any package will cause an IllegalArgumentExceptionto be thrown.」app
因此拋出 IllegalArgumentException
的緣由就在於 key 不惟一,那麼如何保證這種惟一性呢?很明顯定義一個 final 類型的 int 變量和硬編碼一個值的方式都是行不通的。好比下面一個錯誤的例子:ide
private static final int TAG_ONLINE_ID = 1; ((Button)row.findViewById(R.id.btnPickContact)).setTag(TAG_ONLINE_ID,objContact.onlineid);
05-18 20:29:38.044: ERROR/AndroidRuntime(5453): java.lang.IllegalArgumentException: The key must be an application-specific resource id. 05-18 20:29:38.044: ERROR/AndroidRuntime(5453): at android.view.View.setTag(View.java:7704) 05-18 20:29:38.044: ERROR/AndroidRuntime(5453): at com.mypkg.viewP.inflateRow(viewP.java:518)
那若是必定須要使用多個 tag 綁定怎麼作呢?
那麼這麼作,在res/values/strings.xml
中添加編碼
<resources> <item type="id" name="tag_first"></item> <item type="id" name="tag_second"></item> </resources>
imageView.setTag(R.id.tag_first, "Hello"); imageView.setTag(R.id.tag_second, "Success");
就這就保證了 key 值的惟一性。spa
String tag_first=v.getTag(R.id.tag_first).tostring();
就能取到值了!code
做者:老林不跌面兒
連接:https://www.jianshu.com/p/2df2675b516d
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。xml