/ ArrayAdapter के साथ ListView ऊँचाई लपेटने के लिए केवल 1 आइटम दिखा रहा है।

ArrayAdapter के साथ ListView ऊंचाई wrap_content के लिए केवल 1 आइटम दिखा रहा है - एंड्रॉइड, एंड्रॉइड-लेआउट, listview, android-listview, android-arrayadapter

मेरे पास ऐसा मुद्दा है जहां मेरा ListView केवल एक पंक्ति प्रदर्शित कर रहा है, भले ही ArrayList जिसमें डेटा हो उसमें 2 आइटम हैं।

स्पष्टीकरण के लिए, हाँ, मैं एक स्क्रॉल दृश्य के अंदर ListView का उपयोग कर रहा हूं, लेकिन कस्टम एक्सपेंडेबल HightListView (SO पर उत्तरों में से किसी एक से पुनर्प्राप्त) का उपयोग करके मैं इसे संतुलित करने के लिए उपयोग कर रहा हूं जो वास्तव में इस उद्देश्य के लिए उपयोगी है। यह सूची दृश्य स्क्रॉल करने योग्य नहीं है। इसकी ऊंचाई तय है।

इसके अलावा, एक ही स्क्रॉल दृश्य में, अन्य ListView के जोड़े ठीक काम कर रहे हैं, लेकिन यह एक ListView ठीक से काम नहीं कर रहा है।

आगे जाकर, जब मैंने लॉग इन किया पद getView () विधि के अंदर चर मान, यह हमेशा इस सूची दृश्य के लिए 0 है जबकि अन्य सूची दृश्य के लिए, यह क्रमिक रूप से बढ़ रहा है।

मैंने "एडॉप्टर" कोड की तुलना की है और वे समान हैं लेकिन फिर भी वर्तमान सूची दृश्य काम नहीं कर रहा है।

मैंने getView () विधि को ओवरराइड करने की कोशिश की, लेकिन कोई फायदा नहीं हुआ।

किसी भी मदद की सराहना की।

संपादित करें

अगर मैं 250dp की तरह ListView को निश्चित ऊँचाई देता हूँ, तो दोनों पंक्तियों को प्रदर्शित किया जा रहा है, लेकिन यह ऊँचाई के साथ केवल 1 पंक्ति दिखाता है wrap_content

उत्तर:

उत्तर № 1 के लिए 6

इसका एक बहुत ही सामान्य मुद्दा है, इसे हल करने के लिए आपको पढ़ना और लागू करना चाहिए यह WorkAround और Solution.

मेरे मामले में यह पूरी तरह से काम करता है। आपको एक कोशिश भी देनी चाहिए।


उत्तर № 2 के लिए 1

जैसा कि मुझे पता है कि स्क्रॉल दृश्य के भीतर सूची दृश्य ठीक से काम नहीं करता है।

क्योंकि दोनों विजेट में स्क्रॉल होता है इसलिए वे अच्छी तरह से काम नहीं करते हैं।

इसलिए मैं स्क्रॉलव्यू को हटाने की सलाह देता हूं

धन्यवाद..


उत्तर № 3 के लिए 1

मुझे पता है कि यह वह नहीं है जिसे आप सुनना चाहते हैं, बल्कि गंभीरता से, जो भी आप प्रोग्रामिंग कर रहे हैं, उसे टैब या समान पर प्रदर्शित करने पर विचार करें, जैसे कि आपको स्क्रॉलव्यू की आवश्यकता नहीं है।

यदि आपके पास वास्तव में एक स्क्रीन पर इतना डेटा होना चाहिए, तो किसी चीज़ का उपयोग करने पर विचार करें LinearLayout आपके डेटा को प्रदर्शित करने के लिए एडेप्टर के साथ।

सूची के अंदर काम करने के लिए डिज़ाइन नहीं किए गए हैंस्क्रॉलव्यू क्योंकि वे स्वयं स्क्रॉल करने योग्य हैं। आप इसके चारों ओर अपना रास्ता "हैक" कर सकते हैं, लेकिन यह अच्छा नहीं है। यदि आपको वास्तव में उन विशेषताओं की आवश्यकता है जो सूची प्रदान करती हैं, तो अपनी स्क्रीन को टैब में विभाजित करने पर विचार करें, प्रत्येक टैब में एक सूची या दो प्रदर्शित करें।


जवाब के लिए 0 № 4

यह समाधान मेरे लिए काम करता है और समायोजित भी करता हैस्वचालित रूप से लेआउट। शीर्ष-स्तर ListView एडाप्टर पर, getView () पद्धति के अंदर, आप एक दृश्य बनाएंगे जो किसी अन्य ListView के साथ लेआउट का संदर्भ देता है। यह मानते हुए कि "इनरवेयर" लिस्ट व्यू को "लिस्ट व्यू" के रूप में घोषित किया जाता है, इसके एडेप्टर को "एडेप्टर" कहा जाता है, नीचे दिए गए कोड का उपयोग करके देखें। इसके अलावा, सुनिश्चित करें कि आंतरिक ListView लेआउट WRAP_CONTENT पर सेट है, ताकि भले ही ऊंचाई सही हो, यह लेआउट की कमी से अतिरंजित नहीं हो रहा है।

listView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
listView.getLayoutParams().height = adapter.getCount() * {whatever your list item height is}  OR do something else to add up all of the heights;
listView.requestLayout();
listView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
}
);