У меня есть список, содержащий множество различных элементов, таких как EditText, TextView и ListView.listview в другом списке не расширяется, когда к нему добавляются элементы
Я знаю, что звучит немного странно, чтобы добавить Listview в другой список, но у меня есть причины. Что мне нужно сделать, делает внутренний Listview «масштабируемым». Он должен расширяться и сжиматься, когда элементы добавляются или удаляются из него. Я попытался предоставить ListView height: wrap_content, но ничего не сделал. Когда я добавляю элементы в список, они просто скрыты, поскольку для них нет места.
Как я могу сделать этот внутренний список ListView самораспространяющимся, когда элементы добавляются к нему? (Это должно быть ListView в ListView Поэтому, пожалуйста, никаких других предложений о других видах реализации :)!)
Ну вот не является XML для расположения элемента, содержащего внешнюю компоновку:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/trainingpass_headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="false"
android:layout_alignParentTop="true"
android:text="Trainingpass"
android:textSize="16dp"
android:textColor="@android:color/white"
android:background="@android:color/holo_blue_dark"
android:height="35dp"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:textIsSelectable="true"
android:textStyle="bold"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<ImageView
android:id="@+id/trainingpass_showhide_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_dark"
android:height="25dp"
android:minWidth="50dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:padding="7dp"
android:layout_alignBottom="@+id/trainingpass_headline"
android:src="@mipmap/arrows_up_down"
android:layout_alignParentTop="true" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/trainingpass_headline"
android:layout_alignLeft="@+id/trainingpass_headline"
android:layout_alignStart="@+id/trainingpass_headline"
android:id="@+id/trainingPassContainer"
android:background="@color/blue_bg_neutral"
android:visibility="visible"
android:paddingBottom="10dp">
<EditText
android:id="@+id/trainingpass_exercise_searchfield"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:hint="Name of exercise"
android:padding="6dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="@color/blue_bg_inputField"
android:layout_margin="10dp" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/trainingpass_exercise_searchfield"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/sets_container"
android:background="@color/blue_bg_inputField"
android:padding="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/txt_sets_for_exercise"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Sets for exercise"
android:textSize="14dp"
android:textColor="@android:color/black"
android:paddingRight="30dp"
android:paddingLeft="0dp"
android:paddingTop="0dp"
android:paddingBottom="10dp"
android:textStyle="bold"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/add_set_button"
android:layout_alignEnd="@+id/add_set_button" />
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/trainingpass_sets_listview"
android:nestedScrollingEnabled="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignTop="@+id/txt_no_sets" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add set"
android:id="@+id/add_set_button"
android:layout_below="@+id/trainingpass_sets_listview"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add exercise"
android:id="@+id/add_exercise_button"
android:layout_below="@+id/add_set_button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:id="@+id/txt_no_sets"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No sets yet"
android:textSize="14dp"
android:textColor="@android:color/black"
android:paddingRight="30dp"
android:paddingLeft="10dp"
android:paddingTop="20dp"
android:paddingBottom="10dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_below="@+id/txt_sets_for_exercise"
android:visibility="invisible" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_below="@+id/sets_container"
android:id="@+id/exercises_container"
android:background="@color/blue_bg_inputField"
android:padding="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/txt_exercises"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Exercises"
android:textSize="14dp"
android:textColor="@android:color/black"
android:paddingRight="30dp"
android:paddingLeft="0dp"
android:paddingTop="0dp"
android:paddingBottom="10dp"
android:textStyle="bold"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/txt_no_exercises_yet"
android:layout_alignEnd="@+id/txt_no_exercises_yet" />
<TextView
android:id="@+id/txt_no_exercises_yet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No exercises yet"
android:textSize="14dp"
android:textColor="@android:color/black"
android:paddingRight="30dp"
android:paddingLeft="10dp"
android:paddingTop="20dp"
android:paddingBottom="10dp"
android:layout_below="@+id/txt_exercises"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/exercises_listview"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/txt_exercises"
android:layout_alignBottom="@+id/txt_no_exercises_yet" />
</RelativeLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete"
android:id="@+id/delete_trainingpass_button"
android:layout_alignRight="@+id/exercises_container"
android:layout_alignEnd="@+id/exercises_container"
android:layout_below="@+id/exercises_container"
android:background="@color/btn_red"
android:layout_marginLeft="10dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Done"
android:id="@+id/done_trainingpass_button"
android:layout_below="@+id/exercises_container"
android:layout_alignLeft="@+id/exercises_container"
android:layout_alignStart="@+id/exercises_container"
android:layout_toStartOf="@+id/delete_trainingpass_button"
android:background="@color/btn_green"
android:layout_marginRight="10dp" />
</RelativeLayout>
</RelativeLayout>
ListView Я хочу сделать расширяемым, это «trainingpass_sets_listview» в приведенном выше коде.
Вот макет XML для пунктов «trainingpass_sets_listview»:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical"
android:textAlignment="center"
android:transitionGroup="true">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X"
android:id="@+id/btn_delete_set"
android:background="@color/btn_red"
android:height="40dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignBottom="@+id/btn_minus_set" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/field_sets"
android:minWidth="50dp"
android:background="@color/white"
android:textAlignment="center"
android:padding="10dp"
android:editable="false"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/btn_plus_set"
android:layout_toEndOf="@+id/btn_plus_set" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dp"
android:id="@+id/txt_setNo"
android:layout_alignParentTop="true"
android:layout_alignBottom="@+id/field_sets" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="25dp"
android:layout_height="wrap_content"
android:text="+"
android:id="@+id/btn_plus_set"
android:layout_marginLeft="25dp"
android:layout_marginStart="40dp"
android:layout_alignBottom="@+id/field_sets"
android:layout_toRightOf="@+id/txt_setNo"
android:layout_toEndOf="@+id/txt_setNo"
android:layout_alignParentTop="true"
android:background="@color/blue_bg_inputField_darker" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="25dp"
android:layout_height="wrap_content"
android:text="-"
android:id="@+id/btn_minus_set"
android:layout_toRightOf="@+id/field_sets"
android:layout_toEndOf="@+id/field_sets"
android:layout_alignParentTop="true"
android:background="@color/blue_bg_inputField_darker"
android:layout_alignBottom="@+id/field_sets" />
</RelativeLayout>
Если больше информации или код необходим, пожалуйста, просто спросить.
Заранее спасибо :)
Я знаю, что вы заявили: «Это должно быть списком в списке! Так что, пожалуйста, никаких других предложений о других видах реализаций», но так как вы хотите, чтобы listview в списке учитывал, почему бы не попробовать расширяемое представление списка? http://developer.android.com/reference/android/widget/ExpandableListView.html – Fareya
Не просто поместить ListView в ListView. Не могли бы вы объяснить причины этой глупости? – Lamorak
Я согласен ... «пожалуйста, никакие другие [варианты реализации] немного глупы. Иногда то, как вы хотите это сделать, невозможно в Android. :) Если не написать пользовательский вид. – beyondtheteal