2015-11-03 4 views
0

Я пытаюсь создать 2-уровневый расширяемыйListView. Я могу получить данные и привязать к элементам пользовательского интерфейса, но высота между двумя дочерними элементами исправлена. Поскольку внутренний ExpandableListView похож на прокрутку, я вижу только один элемент.ExpandableListView внутри другого ExpandableListView проблема

*group1 
^child1 
    //data 
^child2 
    //data 
*group2 
^child1 
    //data 
^child2 
//dataa 

я ставлю высоту ребенка dynamically.i.e в hieght между group1 и group2 используя следующий метод:

ListAdapter listadp = lv_ancillaryservice.getAdapter(); 
     if (listadp != null) { 
      int totalHeight = 0; 
      for (int i = 0; i < listadp.getCount(); i++) { 
       View listItem = listadp.getView(i, null, lv_ancillaryservice); 
       listItem.measure(0, 0); 
       totalHeight += listItem.getMeasuredHeight(); 
      } 
      ViewGroup.LayoutParams params = lv_ancillaryservice.getLayoutParams(); 
      params.height = totalHeight + (lv_ancillaryservice.getDividerHeight() * (listadp.getCount() - 1)); 
      lv_ancillaryservice.setLayoutParams(params); 
      lv_ancillaryservice.requestLayout(); 

я использовал выше, потому что usingwrap_content оленья кожа работа для ListView. теперь проблемы:

  1. при group1 нажатия^child1 и^child2 являются shownup и при нажатии на ребенка1, у меня есть ListView, но я не в состоянии увидеть полный список (позиция group2 фиксирована).
  2. прокрутка нет, где работает.

ответ

0

Я решил эту проблему, используя эту ссылку https://github.com/PaoloRotolo/ExpandableHeightListView.

package com.rtt.reeferwatch.utilities; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.ViewGroup; 
import android.widget.ExpandableListView; 

public class ExpandableHeightListView extends ExpandableListView { 

boolean expanded = false; 

public ExpandableHeightListView(Context context) { 
    super(context); 
} 

public ExpandableHeightListView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public ExpandableHeightListView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

public boolean isExpanded() { 
    return expanded; 
} 


@Override 
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    if (isExpanded()) { 
     int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 

     ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = getMeasuredHeight(); 
    } else { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 
} 

public void setExpanded(boolean expanded) { 
    this.expanded = expanded; 
} 
} 
Смежные вопросы