2013-03-04 4 views
1

У меня есть ExpandableListView, где каждая группа имеет один ребенок. Каждый ребенок - это другой ListView с различным количеством строк. Существует проблема с высотой элемента ExpandableListView в расширенном состоянии, это не связано с содержимым содержимого ListView. Я просто могу установить конкретное значение высоты в макете дочернего списка. Но я хочу, чтобы ExpandableListView автоматически обертывал каждого ребенка. Является ли это возможным?Расширяемая высота элемента списка с другим списком внутри

getChildView() из моего ExpandableListAdapter:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    if(convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.anit_object_data, parent, false); 
    } 
    ListView lv = (ListView)convertView.findViewById(R.id.listData); 
    List<ListData> valuesList = getItems().get(groupPosition).getListData(getContext()); 
    ListDataAdapter adapter = new ListDataAdapter(getContext(), android.R.layout.simple_list_item_1, valuesList); 
    lv.setAdapter(adapter); 

    return convertView; 
} 


XML для ребенка ListView:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id = "@+id/listHolder" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="40dp" 
     android:layout_marginTop="10dp" 
     android:layout_weight="1" 
     android:orientation="horizontal" > 

     <ListView 
      android:id="@+id/listData" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:clickable="true" 
      android:scrollbars="none" > 
     </ListView> 

    </LinearLayout> 

</LinearLayout> 



Я пытался измерить детскую высоту ListView в getChildView() адаптера, но расширенная высота ExpandableListView по-прежнему неверна.

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    if(convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.anit_object_data, parent, false); 
    } 
    ListView lv = (ListView)convertView.findViewById(R.id.listData); 
    List<ListData> valuesList = getItems().get(groupPosition).getListData(getContext()); 
    ListDataAdapter adapter = new ListDataAdapter(getContext(), android.R.layout.simple_list_item_1, valuesList); 
    lv.setAdapter(adapter); 

    lv.measure(MeasureSpec.EXACTLY, MeasureSpec.UNSPECIFIED); 
    convertView.getLayoutParams().height = lv.getMeasuredHeight(); 

    return convertView; 
} 
+0

Хотите ли вы 'ExpandableListview' разрушаться каждого ребенка? – GrIsHu

+0

Я не уверен, что вы имеете в виду, у меня нет проблем с рухнувшими детьми. – Caxa

+0

Попробуйте следующее: http://www.java2s.com/Code/Android/UI/setListViewHeightBasedOnChildren.htm – Mnio

ответ

1

хорошо, я пробовал думать, что дочерний элемент группы был списком. Но результат был неудачным. Поскольку размер childview (listview) был трудно измерить. Поэтому я изменил решение как обычный способ: дочерний вид был всего лишь элементом, который похож на элемент listview. Так что мы переопределим метод getChildView().

1

Вы надеваете t need a listview inside the expandablelist, it s контролировать себе Inflate позиций Чайлдс, все вы должны быть, это передать другой список и взять childposition

 Смежные вопросы

  • Нет связанных вопросов^_^