2013-02-27 122 views
6

मुझे डेटा तालिका में शीर्षलेख कक्षों की एक श्रृंखला के लिए पाठ को बदलने की आवश्यकता है।
इसे प्राप्त करने के लिए, मुझे उन कक्षों को निर्दिष्ट दृश्य आईडी को पुनर्प्राप्त और संग्रहीत करने की आवश्यकता होगी, ताकि बाद में उन सेल दृश्यों की पहचान के लिए उनका उपयोग किया जा सके।
हालांकि, जब मैं सिर्फ फुलाए गए सेल व्यू के लिए आईडी प्राप्त करने का प्रयास करता हूं, तो यह हमेशा -1 देता है।एंड्रॉइड view.getId() रिटर्न -1

यहाँ मेरी नमूना कोड है:

@Override 
public View getView(final int row, final int column, View converView, ViewGroup parent) { 
    if (converView == null) { 
     converView = inflater.inflate(getLayoutResource(row, column), parent, false); 
     if (row == -1){ 
      int viewId = converView.getId(); 
      setHeaderId(viewId, column+1); 

     } 
    } 
...  
} 

converView.getId() रिटर्न -1 उपरोक्त कोड में, तथ्य यह है कि दृश्य आईडी पहले से ही सौंपा गया है और कोड डीबगिंग के दौरान देखा जा सकता है के बावजूद। उदाहरण के लिए, मैं डीबग के दौरान निम्नलिखित देख सकता हूं: converView = LinearLayout (id = 830042440680)

कोई विचार क्यों मुझे उपरोक्त कोड में -1 (= NO_ID) मिल रहा है?

उत्तर

9

एंड्रॉयड LayoutInflater प्रलेखन से:

निर्दिष्ट xml संसाधन से कोई नया दृश्य पदानुक्रम फुलाना।

तो जब आप

converView = inflater.inflate(getLayoutResource(row, column), parent, false); 

converView सिर्फ अपने लेआउट inflater बना है फोन और कोई आईडी है। आपको मैन्युअल रूप से इस

converView.setId(YOUR_GENERATED_ID); 
+1

यह एक अच्छा जवाब है और इससे मुझे काफी मदद मिली। धन्यवाद! मुझे एहसास नहीं हुआ कि एक्सएमएल inflater द्वारा आवंटित आंतरिक दृश्य आईडी सुलभ नहीं है और मैन्युअल रूप से फिर से असाइन करने की जरूरत है। मैंने अब रनटाइम पर हेडर सेल टाइटल अपडेट करने का कार्य सफलतापूर्वक पूरा कर लिया है। –

+0

पूर्ण समाधान देखें: [http://stackoverflow.com/questions/15065467] –

+0

मुझे आपकी सहायता करने में खुशी है) –