2011-12-12 14 views
9

ExpandableListView में ExpandableListView में समूह को छिपाने के लिए है, तो मैं केवल एक समूह है। मैं उस समूह को छिपाना चाहता हूं, केवल समूह का डेटा दिखाता है। कृपया मेरी मदद करोकैसे एंड्रॉयड

enter image description here

उत्तर

1

माता पिता सेट iew vlayout पैरामीटर hieght शून्य अपने BaseExpandableListAdapter ताकि आप छिपा कर सकते हैं माता पिता

+0

मैं parent.getLayoutParams() की कोशिश की है ऊंचाई = 0। parent.invalidate(); लेकिन यह कुछ भी नहीं करता है: मैंने कोशिश की है: parent.setLayoutParams (नया ViewGroup.LayoutParams (ViewGroup.LayoutParams.FILL_PARENT, 0)); लेकिन यह क्लासकास्ट एक्सेप्शन लॉन्च करता है :( क्या आपने वास्तव में यह कोशिश की है या आपने अनुमान लगाया है? – Giorgio

11

1) के साथ समूह सूचक छुपाएं में करने के लिए:

android:groupIndicator="@android:color/transparent" 

2) उन समूहों के लिए एक खाली फ्रेमलेआउट लौटाएं जिन्हें आप खाली करना चाहते हैं:

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 

    //By default the group is hidden 
    View view = new FrameLayout(context); 

    String groupTitle = getGroup(groupPosition).toString(); 

    //in case there's more than one group and the group title is not empty then show a TextView within the group bar 
    if(getGroupCount() > 1 && !groupTitle.isEmpty()) { 

     view = getGenericView(); 
     ((TextView)view).setText(groupTitle); 
    } 

    return view; 

} 

3) समूहों आप नहीं दिखा रहे हैं समूह बार के लिए expandGroup कॉल करें:

expandableListView.expandGroup(GROUP_ID); 

4) यदि आप एक समूह सूचक आप getGroupView विधि से प्रोग्राम के रूप में एक imageView जोड़ने के लिए दिखाना चाहते हैं। समूह सूचक को छिपाने/दिखाने पर अधिक जानकारी के लिए इस ब्लॉग पोस्ट को देखें: Hiding group indicator for empty groups

+0

फ़्रेमलेआउट पर लौटने से चाल चल रही है। धन्यवाद :) – Atmaram

+0

चाल के लिए धन्यवाद। यह एकमात्र उत्तर है जो मेरे लिए काम करता है। वैसे भी, यह थोड़ा हैकी नहीं है? मुझे समझ में नहीं आता है कि हेडर को छुपाने का "ऑफिसियल" तरीका क्यों नहीं है। – kazbeel

+0

यह चाल है: दृश्य देखें = नया फ्रेमलाउट (संदर्भ); – Derzu

9

मुझे एक ही समस्या थी और इससे मेरी समस्या हल हो गई। अपने लिस्टव्यू के एडाप्टर में getGroupView में निम्न जोड़ें।

if (groupPosition == 0) { 
    convertView = layoutInflater.inflate(R.layout.blank_layout, null); 

} else { 
    convertView = layoutInflater.inflate(R.layout.group_indicator_cell,null); 
} 

यह सूची के 0 वें समूह को खाली कर देगा।

जहां खाली लेआउट लेआउट_हेइट = 0 डीपी के अंदर कुछ दृश्य के साथ एक लेआउट है। यह काम करता है!

+0

मैं अभी-अभी यह कोशिश की है, और यह वास्तव में काम करता है, लेकिन यह विस्तार योग्य सूची में शेष दिखाई समूहों के साथ कुछ अजीब व्यवहार का कारण बनता है। चालाक समाधान, फिर भी! – LargeGlasses

2

खाली लेआउट लौटने के बजाय, मैं लेआउट में सभी बच्चों के माध्यम से यात्रा करता हूं और कोई डेटा नहीं होने पर view.setVisibility(View.Gone) पर कॉल करता हूं।

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 

    LinearLayout lo; 

    if (convertView != null) { 
     lo = (LinearLayout) convertView; 
    } else { 
     lo = (LinearLayout) mLayoutInflater.inflate(R.layout.list_item_group_header, parent, false); 
    } 

    int visibility = mData.size() == 0 ? View.GONE : View.VISIBLE; 
    for (int i = 0; i < lo.getChildCount(); i++) { 
     lo.getChildAt(i).setVisibility(visibility); 
    } 
    return lo; 
}