2015-06-02 24 views
5

रीसायकल नहीं करता है, मैं शीर्ष पर शीर्षलेख के साथ एक सूची दृश्य शैली रीसाइक्लिंग व्यू चाहता हूं, और मैं नहीं चाहता कि हेडर व्यू रीसाइक्लिंग हो, कभी भी।रीसाइक्लर हेनर व्यू के साथ LinearLayoutManager के साथ देखें जो

मैं पूरी तरह RecyclerView और LinearLayoutManager के लिए नया हूँ लेकिन मुझे लगता है कि मैं क्या LinearLayoutManager बढ़ा कर भी मुश्किल नहीं होना चाहिए चाहते हैं।

अतिरिक्त जानकारी के मामले में जरूरत है, लेकिन मुझे लगता है कि इसके बाद के संस्करण के लिए पर्याप्त है:

मैं पहले से ही स्थिति में एक शीर्ष लेख दृश्य के साथ एक RecyclerView है 0. वह भाग अतः जवाब की मदद से काफी आसान था। लेकिन दृश्य पुनर्नवीनीकरण हो जाता है, जो हेडर में एडिटटेक्स्ट दृश्यों के साथ कई मुद्दों का कारण बन रहा है (फोकस रखने की कोशिश कर रहा है, फोकस बहाल कर रहा है, कैरेट को दृश्यमान रखता है, ऑटो-सही फीचर के साथ अजीब चीजें नहीं करता है, जबकि टेक्स्टटेक तकनीकी रूप से चला जाता है/पुनर्नवीनीकरण, आदि)। तो सरल समाधान यह नहीं होगा कि वह दृश्य रीसाइक्लिंग हो, जो मुझे लगता है कि कस्टम लेआउट मैनेजर के साथ संभव है, लेकिन मुझे नहीं पता कि कहां से शुरू करना है।

मैं अपनी सूची के ऊपर हेडर व्यू को बस नहीं रख सकता, क्योंकि मैं इसे सूची के साथ स्क्रॉल करना चाहता हूं (यह हर समय स्क्रीन के शीर्ष पर तय होने के लिए बहुत लंबा है)।

+1

ट्यून रहें, यह स्थिति केवल एक अद्वितीय दृश्य प्रकार को असाइन करना आसान होगा। 'GetItemViewType() 'अन्य सभी स्थितियों से स्थिति' 0' के लिए एक अलग मान लौटाएं। फिर, उस दृश्य को कभी भी पुनर्नवीनीकरण नहीं किया जाएगा, क्योंकि स्थिति '0' के अलावा इसे रीसायकल करने के लिए कुछ भी नहीं है। – CommonsWare

+0

मैं वास्तव में पहले से ही ऐसा करता हूं, लेकिन मुझे पूरा यकीन है कि यह किसी भी तरह से पुनर्नवीनीकरण हो जाता है, हालांकि मुझे 100% यकीन नहीं है कि इसे कैसे जांचें। मुझे पता है कि ऑन बाइंड को फिर से हेडर व्यू के लिए बुलाया जाता है, हर बार जब यह दृश्य से बाहर स्क्रॉल करता है और फिर वापस आ जाता है ... तो यही कारण है कि मुझे लगता है कि यह अभी भी पुनर्नवीनीकरण हो जाता है। – eselk

+0

मैं देख रहा हूं कि अन्य सभी बग, और अन्य कारण मुझे लगता है कि यह पुनर्नवीनीकरण हो जाता है, यदि आप फोकस के साथ एक संपादन टेक्स्ट (कीबोर्ड खोलें, इसमें टाइपिंग) रखते हैं तो आप इसी तरह के समान हैं और आप इसे हटा दें पहले कुछ और ध्यान देना। समझाना मुश्किल है लेकिन जब ऐसा होता है तो कुंजीपटल/ओएस बस खुश नहीं होता है। – eselk

उत्तर

1

LayoutManager जो दस्तावेज़ के अनुसार LayoutManager#ignoreView(View) इंटरफेस,

झंडे एक दृश्य इतना है कि यह खत्म कर दिया नहीं किया जाएगा या पुनर्नवीनीकरण है। जैसा आप यहां क्या जरूरत

संपादित गूगल devs (here) टिप्पणी की कि यह झंडा किसी अन्य उद्देश्य में सेवारत है

लग रहा है, तो यह "RecyclerView हैडर" समस्या का समाधान करने वाला नहीं है। हालांकि, वे समाधान पर काम कर रहे हैं, इसलिए कसकर पकड़ें और

+0

ओह वाह, यह एक जीवन-सुरक्षित हो सकता है, इस ASAP का परीक्षण करेगा और रिपोर्ट करेगा - धन्यवाद! – eselk

+0

@eselk बुरी खबर लाने की इच्छा नहीं है, लेकिन ऐसा लगता है कि "अनदेखा" ध्वज किसी अन्य उद्देश्य की सेवा कर रहा है :(इसे जांचें: https://code.google.com/p/android/issues/detail?id= 176602 और कर सकते हैं = 1 और क्यू = रिपोर्टर% 3ADudka और colspec = आईडी% 20 टाइप% 20 स्टेटस% 20 ऑनर% 20 सारांश% 20 स्टर्स –

+0

मैं इसे समझने की कोशिश कर रहा हूं, लेकिन मौके से आपने पहले इसका उपयोग किया है?यह पता लगाने की कोशिश कर रहा है कि इस भाग का क्या अर्थ है "आप इस विधि को केवल तभी कॉल कर सकते हैं यदि आपका लेआउटमैंजर चालू है या स्क्रॉल कॉलबैक पर है।" - क्या उनका मतलब लेआउट चिल्ड्रेन पर है, और मुझे इसे हुक करने के लिए लेआउटमैनेजर को उप-वर्ग करने की आवश्यकता है? – eselk

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