2015-10-07 2 views
9

जब FirebaseUI में FirebaseListAdapter को उप-वर्गीकरण करते हैं तो आइटम को क्लिक करने की ओबीजे कुंजी कैसे प्राप्त हो सकती है?आइटम क्लिक पर FirebaseListAdapter से obj कुंजी कैसे प्राप्त करें। FirebaseUI

फायरबेस लेस्ट एडाप्टर में निम्न विधि है जो आइटम आईडी प्राप्त करती है, लेकिन लंबे समय तक लौटती है। लेकिन मुझे ऑब्जेक्ट कुंजी की आवश्यकता है जो डिफ़ॉल्ट स्ट्रिंग प्रारूप में है।

public long getItemId(int i) { 
    return (long)this.mSnapshots.getItem(i).getKey().hashCode(); 
} 

उत्तर

30

FirebaseListAdapter मानता है कि आप हमेशा आइटम आप के साथ बातचीत कर रहे हैं के सूचकांक/स्थिति पता है। एंड्रॉइड संदर्भ को देखते हुए यह समझ में आता है, क्योंकि संग्रह दृश्य इंडेक्स आधारित हैं।

एक बार जब आप स्थिति जानते हैं, तो आप ऑब्जेक्ट के फ़ायरबेस संदर्भ प्राप्त करने के लिए adapter.getRef(position) पर कॉल कर सकते हैं। उस संदर्भ पर, आप कुंजी प्राप्त करने के लिए getKey() पर कॉल कर सकते हैं। हालांकि मैं केवल अंतिम उपाय के रूप में ऐसा करने की सलाह देता हूं।

+1

धन्यवाद! हाँ वह काम करेगा। लेकिन जब भी मुझे अक्सर संदर्भित पथ बनाने के लिए इसकी आवश्यकता होती है, तो मैंने वास्तव में ऑब्जेक्ट में कुंजी और आईडी को संग्रहीत करना शुरू कर दिया है, और इसे बहुत सुविधाजनक पैटर्न ढूंढें। – srinivas

+1

हम ऑब्जेक्ट्स में ** संदर्भ ** स्टोर करने के लिए फायरबेस यूआई टीम में बहस कर रहे हैं, लेकिन अब तक इसके खिलाफ फैसला किया है। सामान्य बेस क्लास या इंजेक्टर इंटरफेस की आवश्यकता के ऊपरी हिस्से को सामान्य उपयोग-मामले के फायदे से अधिक लग रहा था। बेशक, यदि आपके पास एक विशिष्ट उपयोग-मामला है तो विचार अलग-अलग हो सकता है। मैं अभी भी कुंजी के बजाय 'फायरबेस' रेफरी रखने की सलाह दूंगा। रेफरी हल्के वजन वाले होते हैं और केवल कुंजी स्ट्रिंग पर एक अच्छी प्रकार की सुरक्षित परत जोड़ते हैं। –

+0

एक अच्छी चर्चा होनी चाहिए। मेरे मामले में यह उपयोगी लगता है क्योंकि मैं कई रिलेशनल मामलों में कई लोगों को समझता हूं, आपको अपने संग्रह में एक-दूसरे के लिए उलटा इंडेक्स बनाना पड़ सकता है। इसलिए डिफ़ॉल्ट रूप से एक फायरबेस संदर्भ इस मामले में बहुत उपयोगी होगा, और संभवतः कई मॉडलिंग आवश्यकताओं के लिए कई मॉडलिंग में भी आवश्यक है। – srinivas

संबंधित मुद्दे