Прокрутка не работает для моего ListView

У меня есть макет, я хочу использовать представление прокрутки. Внутри представления прокрутки есть список, в котором фиксировано 9 элементов, поэтому я хочу, чтобы эти 9 элементов отображались на всей странице, а остальные части попадают в представление прокрутки.

МОЙ XML-файл:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/headerLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:background="@drawable/top_bg"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/back_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:onClick="goBack"
            android:src="@drawable/back_button" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="75dp"
            android:layout_marginTop="10dp"
            android:text="Traveller Details"
            android:textColor="@android:color/white" />
    </LinearLayout>
     <ScrollView 
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:layout_gravity="center"
        android:layout_below="@+id/headerLayout"
        android:fillViewport="true">

        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    <LinearLayout 
        android:id="@+id/tittleLayout"

        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_marginTop="5dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/TittleTravellerDetails"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:gravity="left"
            android:text="Traveller Details" />

        <View
            android:layout_width="wrap_content"
            android:layout_height="2dip"
            android:layout_marginTop="2dp"
            android:background="#FF909090" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/passengerDetails"
        android:layout_below="@+id/tittleLayout"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="vertical">

        <Spinner
            android:id="@+id/Tittle"
            android:layout_width="290dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:visibility="gone"
            android:layout_height="wrap_content"/>
        <EditText
            android:id="@+id/firstName"
            android:layout_width="290dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="10dp"
            android:maxLines="1"
            android:hint="First Name" />

        <EditText
            android:id="@+id/LastName"
            android:layout_width="290dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="10dp"
            android:maxLines="1"
            android:hint="Last Name" />

        <ListView
            android:id="@+id/passengerList"
            android:layout_width="290dp"
            android:layout_height="166dp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="10dp"
            android:visibility="gone"
            android:choiceMode="singleChoice" />

    </LinearLayout>

    <LinearLayout 
        android:id="@+id/ContactDetailsLayout"
        android:layout_below="@+id/passengerDetails"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_marginTop="10dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/TittleContactDetails"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:gravity="left"
            android:text="ContactDetails" />

        <View
            android:layout_width="wrap_content"
            android:layout_height="2dip"
            android:layout_marginTop="2dp"
            android:background="#FF909090" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/mobileEmailDetails"
        android:layout_below="@+id/ContactDetailsLayout"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/mobileNumber"
            android:layout_width="290dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="10dp"
            android:maxLength="10"
            android:maxLines="1"
            android:inputType="number"
            android:hint="Mobile No" />

        <TextView
            android:id="@+id/emailid"
            android:layout_width="284dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="10dp"
            android:hint="Email ID" />

    </LinearLayout>
    <LinearLayout 
        android:id="@+id/continueBooking"
        android:layout_below="@+id/mobileEmailDetails"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/continuebooking"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="30dp"
            android:src="@drawable/searchflight" />

    </LinearLayout>
    </LinearLayout>
    </ScrollView>
 </RelativeLayout>

Когда Listview появится внутри идентификатора макета: passengerDetails, текст редактирования и счетчик не появятся. Пожалуйста, помогите мне решить проблему. Предложите мне, что я должен сделать


person Developer    schedule 23.08.2013    source источник
comment
вы никогда не должны ставить listview под scorllview   -  person Raghunandan    schedule 23.08.2013
comment
Вы не получаете никаких исключений, потому что AFAIK ScrollView должен иметь только одного ребенка, ..   -  person CRUSADER    schedule 23.08.2013
comment
@Raghunandan, но требование что-то вроде того, что я должен сделать это   -  person Developer    schedule 23.08.2013
comment
Список @Gaurav прокручивается сам по себе. поэтому размещение списка в представлении прокрутки не имеет смысла   -  person Raghunandan    schedule 23.08.2013
comment
@Raghunandan, если у вас есть устройство, установите приложение clearTrip в свой телефон, чтобы взять 9 человек для поиска рейса в бронировании, как они это делают, я должен сделать то же самое.   -  person Developer    schedule 23.08.2013
comment
@Gaurav, я не знаю, у меня нет этого приложения   -  person Raghunandan    schedule 23.08.2013
comment
установите, что на вашем устройстве это даст полную картину, о которой я говорю, что я должен получить полную функцию, которую они дали   -  person Developer    schedule 23.08.2013
comment
@Gaurav, почему я должен четко изложить свой вопрос, а не просить других установить приложение на свое устройство и проверить, чтобы понять ваш вопрос. Почему бы не опубликовать снэп сопли   -  person Raghunandan    schedule 23.08.2013
comment
Я должен установить ошибку в элементах списка. Поэтому я читал кое-что, что мы не можем получить доступ к текстовому представлению, которое не находится на экране. Поэтому, возможно, я должен сделать все элементы на экране, это моя главная проблема   -  person Developer    schedule 23.08.2013
comment
сначала покажите текстовое представление, затем список   -  person Pankaj Arora    schedule 23.08.2013
comment
Компонент @Raghunandan ListView не отображал элемент в позиции, которая не находится на экране. Это ленивый компонент, который отображает только то, что находится на экране. Поэтому не думайте, что getChildAt возвращает ненулевое представление. Поэтому из-за этого я не могу установить ошибку для элементов. Вот почему я попытался использовать прокрутку.   -  person Developer    schedule 23.08.2013
comment
@Gaurav вам нужен индекс элемента в списке, а затем на основе этой ошибки установить текстовое представление. помните, что listview перерабатывает просмотры, и ваш вопрос не связан с вашим комментарием. ваш заголовок отличается от вопроса в комментарии.   -  person Raghunandan    schedule 23.08.2013
comment
у меня есть все это, но это дает мне исключение нулевого указателя в той части, которая не находится на экране   -  person Developer    schedule 23.08.2013
comment
@Gaurav, потому что lsitivew перерабатывает просмотры.   -  person Raghunandan    schedule 23.08.2013
comment
это то, что я опубликовал, если вы можете мне помочь, спасибо за вашу любезную помощь stackoverflow.com/questions/18395669/   -  person Developer    schedule 23.08.2013


Ответы (3)


http://developer.android.com/reference/android/widget/ScrollView.html

Цитата из документов

Вы никогда не должны использовать ScrollView с ListView, потому что ListView сам заботится о вертикальной прокрутке. Самое главное, что это отменяет все важные оптимизации в ListView для работы с большими списками, поскольку это эффективно заставляет ListView отображать весь список элементов, чтобы заполнить бесконечный контейнер, предоставленный ScrollView.

Вы можете добавить свои другие представления в виде верхних и нижних колонтитулов в список.

Чтобы добавить нижние колонтитулы

public void addFooterView (View v)

Added in API level 1
Add a fixed view to appear at the bottom of the list. If addFooterView is called more than once, the views will appear in the order they were added. Views added using this call can take focus if they want.

NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that will also account for header and footer views.

Parameters
v   The view to add.

Чтобы добавить заголовки

public void addHeaderView (View v)

Added in API level 1
Add a fixed view to appear at the top of the list. If addHeaderView is called more than once, the views will appear in the order they were added. Views added using this call can take focus if they want.

NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that will also account for header and footer views.

Parameters
v   The view to add.
person Raghunandan    schedule 23.08.2013
comment
принял ваш ответ. Итак, как я могу получить свою функциональность, которую я хочу - person Developer; 23.08.2013
comment
@Gaurav, вы можете добавить верхний и нижний колонтитулы в список, разве вы не видите мой предыдущий комментарий, проверьте отредактированный пост. Вы должны опубликовать снимок, а не просить других установить какое-то другое приложение, чтобы понять ваш вопрос. Если это так, напишите письмо разработчику этого приложения, возможно, он вам поможет. - person Raghunandan; 23.08.2013
comment
@Gaurav, ты задаешь слишком много вопросов в разделе комментариев. если у вас есть сомнения, которые отличаются от тех, что связаны здесь, пожалуйста, задайте новый вопрос. Это ведет к дискуссии. если ответ помогает принять и задать новый вопрос с соответствующими деталями - person Raghunandan; 23.08.2013
comment
в комментарии есть мой вопрос, если вам нужно больше кода, я могу обновить его. Я застрял в этом за последние 3 дня. - person Developer; 23.08.2013

Не рекомендуется помещать один прокручиваемый элемент в другой. Вам нужно избегать такого типа построения макетов. Возможно, вы захотите переосмыслить свой макет.

person Eugene    schedule 23.08.2013
comment
я должен показать 9 элементов в списке, и высота будет заполнена родительским. некоторые другие способы создать такой же макет - person Developer; 23.08.2013

Просто замените приведенный выше ScrollView следующим:

  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/headerLayout"
    android:layout_gravity="center"
    android:fillViewport="true" >
person Exceptional    schedule 23.08.2013