2013-03-04 55 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> 



我试图衡量getChildView孩子ListView的高度()适配器,但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'崩溃每个孩子的childposition? – GrIsHu 2013-03-04 10:04:01

+0

我不确定你的意思,我没有崩溃的孩子的问题。 – Caxa 2013-03-04 10:43:25

+0

试试这个: http://www.java2s.com/Code/Android/UI/setListViewHeightBasedOnChildren.htm – Mnio 2015-05-29 21:44:06

回答

1

好吧,我已经试过你的想法,组子视图是一个列表视图。但结果并不好。因为childview(listview)的高度很难衡量。所以我按照正常的方式更改了解决方案:子视图只是一个与listview项目相似的项目。这样我们也可以覆盖getChildView()方法。

1

你不t need a listview inside the expandablelist, it - 控制自己孩子的位置的充气,所有你必须是只要通过其他列表,并采取