2011-12-12 51 views

Trả lời

1

Đặt mẹ iew vlayout params hieght để zero trong BaseExpandableListAdapter của bạn để bạn có thể che giấu bạn mẹ

+0

Tôi đã thử parent.getLayoutParams(). Height = 0; parent.invalidate(); nhưng nó không làm bất cứ điều gì: Tôi đã thử: parent.setLayoutParams (mới ViewGroup.LayoutParams (ViewGroup.LayoutParams.FILL_PARENT, 0)); nhưng nó khởi chạy một ClassCastException: ( Bạn đã thực sự thử điều này hoặc bạn đã đoán? – Giorgio

11

1) Ẩn chỉ với Nhóm:

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

2) trả lại một FrameLayout trống cho các nhóm bạn muốn trống như sau:

@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) Gọi expandGroup cho các nhóm bạn không hiển thị thanh nhóm:

expandableListView.expandGroup(GROUP_ID); 

4) Nếu bạn muốn hiển thị một chỉ số nhóm bạn phải thêm một ImageView lập trình từ phương pháp getGroupView. Kiểm tra bài đăng trên blog này để biết thêm thông tin về cách ẩn/hiển thị chỉ báo nhóm: Hiding group indicator for empty groups

+0

Trả lại FrameLayout đã thực hiện thủ thuật. Cảm ơn :) – Atmaram

+0

Cảm ơn bạn đã lừa. Đây là câu trả lời duy nhất nó làm việc cho tôi. Dù sao, không phải là nó một chút hacky? Tôi không hiểu tại sao không phải là một "offcial" cách để ẩn tiêu đề. – kazbeel

+0

Đây là mẹo: Xem chế độ xem = new FrameLayout (ngữ cảnh); – Derzu

9

Tôi đã gặp vấn đề tương tự và điều này đã khắc phục được sự cố của tôi. Trong bộ điều hợp Listview của bạn, hãy thêm phần sau vào getGroupView.

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

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

Thao tác này sẽ xóa nhóm thứ 0 trong danh sách.

Trường hợp bố cục trống là bố cục với một số chế độ xem bên trong có layout_height = 0dp. Nó hoạt động!

+0

Tôi vừa mới thử điều này, và nó thực sự hoạt động, nhưng nó gây ra một số hành vi lạ với các nhóm hiển thị còn lại trong danh sách có thể mở rộng. Tuy nhiên, giải pháp thông minh! – LargeGlasses

2

Thay vì trả lại bố cục trống, tôi di chuyển qua tất cả các trẻ em trong bố cục và gọi view.setVisibility(View.Gone) khi không có dữ liệu.

@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; 
} 
Các vấn đề liên quan