8

मैं इस तरह scrollview में एक RecyclerView था:RecyclerView, कुछ आइटम नहीं दिखाए जाते हैं

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!--other stuff--> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.RecyclerView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone"/> 

    </LinearLayout> 

    <!--other stuff--> 

</ScrollView> 

और RecyclerView के आइटम एक RelativeLayout, जिनमें से अंदर है एक EditText और अन्य विचार है। उस RelativeLayout और EditText दोनों wrap_content दोनों हैं। उपयोगकर्ता उस EditText में लंबाई/रेखाओं की सीमा के बिना इनपुट कर सकता है ताकि प्रत्येक आइटम की ऊंचाई अलग हो।

तब मैंने पाया कि getItemCount()Adapter में वास्तविक मूल्य लौटाता है लेकिन onBindViewHolder() गलत समय (इसे से कम होना चाहिए) कहा जाता है, इस प्रकार सभी वस्तुओं को दिखाने के लिए पर्याप्त नहीं है।

मुझे पता चला कि यह तब होगा जब मैंने recyclerView.setNestedScrollingEnabled(false) लिखा था। लेकिन मैं इस लाइन को नहीं हटा सकता। क्योंकि अगर मैंने ऐसा किया, तो RecyclerView आसानी से स्क्रॉल नहीं करेगा और ScrollView और ScrollView के अंदर अन्य विचारों के साथ सामंजस्यपूर्ण नहीं होगा।

यह 6.0 पर होता है लेकिन 4.1 पर नहीं होता है।

मैंने इस पृष्ठ पर Google के साथ संवाद किया: https://code.google.com/p/android/issues/detail?id=213914 और उसने मुझे बताया कि यह RecyclerView के लिए एक बग फिक्स है। आप उस पृष्ठ पर जा सकते हैं ताकि आप प्रश्न और मेरे लक्ष्य को बेहतर ढंग से समझ सकें (वहां समस्या दिखाने के लिए एक छोटा सा नमूना प्रोजेक्ट है)। मैं अब भी उससे सहमत नहीं हूं और मैं समस्या को हल करना चाहता हूं। कृपया मदद करें, अग्रिम धन्यवाद।

+0

कोशिश: fillViewport = "true" scrollview –

+0

@LucasPaolillo खैर, यह मदद नहीं करता है। – ywwynm

+0

एंड्रॉइड के साथ: fillViewPort = "true", रैखिक लेआउट ऊंचाई को match_parent –

उत्तर

42

मुझे स्वयं समाधान मिला: ScrollViewNestedScrollView के साथ प्रतिस्थापित करें और recyclerView.setNestedScrollingEnabled(false) रखें। मुझे नहीं पता कि यह NestedScrollView है, लेकिन यह काम करता है।

नोटिस:

  1. NestedScrollViewScrollView का एक बच्चा लेकिन FrameLayout की नहीं है।
  2. यह समाधान स्वयं-अनुरूपित adjustResize के साथ कुछ बग भी लाएगा। एंड्रॉयड स्थापित करने के लिए
+0

धन्यवाद। एक जादू की तरह काम किया। मैंने NestedScrollView के साथ स्क्रॉलव्यू को बदल दिया और सब कुछ ठीक है। –

+2

ने मुझे भी मदद की, धन्यवाद, '' सेट किया गया है स्क्रॉलिंग सक्षम (झूठा); '' 'चिकनी स्क्रॉलिंग रखने के लिए महत्वपूर्ण है – user2582318

+0

आप भगवान हैं !!! : डी धन्यवाद –

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