2012-02-14 9 views
20

मेरे पास सरल लेआउट है, लेकिन मैं केवल स्ट्रिंग टैग सेट कर सकता हूं। पूर्णांक टैग कैसे सेट करें?xml लेआउट फ़ाइल में विजेट में पूर्णांक टैग कैसे सेट करें?

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:tag="1" 
    android:src="@drawable/image" /> 

अद्यतन

मुझे पता चला XML लेआउट में पूर्णांक टैग सेट करने के लिए कैसे। हमें किसी भी XML संसाधन फ़ाइल में एक पूर्णांक चर निर्दिष्ट करने की आवश्यकता है। यही कारण है कि कि तरह दिखना चाहिए:

res/values ​​/ value.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
<integer name="int1">15</integer> 
<integer name="int2">1</integer> 
</resources> 

और अब हम हमारे एक्सएमएल के लिए टैग के रूप में "@ पूर्णांक/int1" या "@ पूर्णांक/INT2" का उपयोग करने के लिए स्वतंत्र हैं विगेट्स, उदाहरण के लिए:

<ImageView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:tag="@integer/int2" 
android:src="@drawable/image" /> 

हालांकि, मेरे मामले में मैं प्रोग्राम के रूप में टैग :)

+1

आप अपने इरादे के बारे में थोड़ा और अधिक व्याख्या कर सकते हैं? – Ajay

+0

वर्तमान में, जब मैं View.getTag() का उपयोग करता हूं, तो मुझे स्ट्रिंग "1" मिलता है। स्ट्रिंग "1" के बजाय इंटीजर 1 प्राप्त करने के लिए मुझे एक्सएमएल लेआउट में क्या निर्दिष्ट करना चाहिए? –

+0

मैं ImageView पर आईडी विशेषता जोड़ सकता हूं, इसे कोड में प्राप्त कर सकता हूं और View.setTag (1) का उपयोग कर सकता हूं, लेकिन मैं जानना चाहता हूं कि xml लेआउट फ़ाइल में पूर्णांक टैग कैसे सेट करें। –

उत्तर

0

आपूर्ति इस दृश्य स्ट्रिंग वाली के लिए एक टैग सेट करने के लिए पसंद करते हैं, View.getTag() के साथ बाद में लिया गया या खोजे जाने के लिए View.findViewWithTag() के साथ।

एक यूनिकोड वर्ण के लिए '\\n' या '\\uxxxx' जैसे वर्णों से बचने के लिए '\\;' का उपयोग करके एक स्ट्रिंग मान होना चाहिए।

अधिक जानकारी के लिए android:tag

15

करने के लिए जाना एक्सएमएल आप केवल स्ट्रिंग सेट कर सकते हैं। लेकिन कोड में आप View.setTag(int value); का उपयोग कर सकते हैं क्योंकि यह ऑब्जेक्ट लेता है। एक मूल्य के आप पूर्णांक int value = (Integer)view.getTag();

+0

यह मेरे लिए काम किया, धन्यवाद! –

+0

यह प्रश्न में अपेक्षित परिणाम उत्पन्न करने के लिए एक लूप (बाल वस्तुओं के माध्यम से पुनरावृत्त) में उपयोग किया जा सकता है, धन्यवाद यह मेरे लिए काम करता है। – SadeepDarshana

+0

पूर्णांक।valueOf (टैग) बिना समस्या के दोनों को पढ़ने में सक्षम होना चाहिए, जिससे आप एक्सएमएल में एक स्ट्रिंग मान सेट कर सकते हैं और उसके बाद क्लासकास्ट एक्सेप्शन –

4

करने के लिए इसे कास्ट करने के लिए लेखक का संपादित से मैं @integer/int2 उपयोग करने के लिए एक पूर्णांक के रूप में टैग सेट करने का प्रयास किया की जरूरत है पढ़ने के लिए, लेकिन यह अभी भी लगता है कि getTag() (एक String के रूप में टैग लौटा रहा है कम से कम में जेली बीन)। Integer.parseInt(String)String को Integer और @integer/int2 में परिवर्तित कर सकता है यह सत्यापित कर सकता है कि आपका टैग उचित Integer है। इसलिए यदि आप एक्सएमएल के माध्यम से एक टैग में Integer डालना चाहते हैं जो शायद सबसे अच्छा मार्ग है। डाउनसाइड, चूंकि यह parseInt का उपयोग करता है, इसलिए इसे पूरे समय int के रूप में संग्रहीत करने में थोड़ा अधिक समय लगता है।

+0

के बारे में चिंता के बिना इंटीग्रर्स लिख सकते हैं, जो parseInt() के प्रदर्शन के बारे में परेशान नहीं है जो nth times की तुलना में बेहतर है एक लेआउट inflating :) – comeGetSome

+0

@comeGetSome मैं चिंतित नहीं हूं, बस उल्लेख कर रहा हूँ। –

2

मैं सेटअप करने के लिए निम्नलिखित एक्सएमएल में टैग का उपयोग किया और कोड में बाद में इसे संभाल:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
<string name="item_tag">1</string> 
</resources> 

<!-- TextView with Tag --> 
<TextView 
android:id="@+id/item_with_tag" 
android:tag="@string/item_tag"/> 

// retrieve the tag 
int itemTag = Integer.valueOf((String) textView.getTag()); // itemTag == 1 
संबंधित मुद्दे