我使用 ListActivity 和 ArrayAdapter<> 来创建我自己的自定义无限可扩展列表。
父行布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutsHolder"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left|top"
android:paddingBottom="10px">
<LinearLayout android:id="@+id/layout1holder"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="top|left"
android:paddingBottom="5px">
<TextView android:id="@+id/level"
android:layout_marginTop="6px"
android:layout_marginLeft="5px"
android:textColor="@color/gray"
android:textSize="40px"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="left|center_vertical"></TextView>
<TextView android:id="@+id/expander"
android:layout_weight="0"
android:layout_marginTop="6px"
android:layout_marginLeft="5px"
android:text=">"
android:textColor="@color/gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40px"
android:layout_gravity="left|center_vertical"></TextView>
<TextView android:id="@+id/label"
android:layout_weight="1"
android:layout_marginTop="6px"
android:layout_marginLeft="5px"
android:text="..."
android:textColor="@color/gray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40px"
android:layout_gravity="left|center_vertical"></TextView>
</LinearLayout>
<ListView android:id="@+id/listHolder"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- there i put children rows-->
</ListView>
</LinearLayout>
儿童行:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowHolder"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_gravity="left">
<TextView android:id="@+id/level"
android:text=""
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:textSize="40px"
android:layout_marginTop="6px"
android:layout_marginLeft="5px"
android:gravity="left|center_vertical"></TextView>
<TextView android:id="@+id/label"
android:text="..."
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/gray"
android:textSize="40px"
android:layout_marginTop="6px"
android:layout_marginLeft="5px"
android:layout_marginRight="10px"
android:gravity="left|center_vertical"></TextView>
</LinearLayout>
初始化列表时,隐藏了父行的 listHolder :
viewHolder.listHolder.setVisibility(View.GONE);
然后会添加孩子:
holder.listHolder.setAdapter(new MyArrayAdapter((Activity)this.context, this.db, ...));
点击扩展程序 * listHolder *必须可见:
viewHolder.listHolder.setVisibility(View.VISIBLE);
但这就是我所看到的:
在扩展之前:http://i.stack.imgur.com/OOWyQ.png
展开后:http://i.stack.imgur.com/TZ9S4.png
那么,发生了什么?