Багги ListView делает меня грустным

У меня есть ListView , где я определил макет каждого элемента в отдельном файле XML.В этом файле я включил RatingBar и EditText .

I ' мы программно создали 7-8 элементов в этом ListView . Когда я прокручиваю их, кажется, что они довольно глючные. Вот несколько примеров:

  1. Если я установлю фокус на EditText в первой строке, а затем прокрутите вниз ListView , случайный EditTexts из других строк будет сосредоточиться. Похоже, что следующий EditText после исчезновения сфокусированного объекта получает фокус. Возможно, это сделано намеренно, но как пользователю это кажется очень странным.

  2. Если я установлю фокус на EditText , получу виртуальную клавиатуру, наберу что-нибудь и нажмите кнопку «Готово» на моем Виртуальная клавиатура, EditText будет очищаться, как только виртуальная клавиатура исчезнет.

  3. Иногда, когда я нажимаю EditText , с серой границей и текстом, RatingBar и EditText внутри:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="10dip"
        android:paddingBottom="10dip"
        android:paddingLeft="15dip"
        android:paddingRight="15dip"
        >
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="2dip"
            android:background="@drawable/shape_outer">
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="2dip"
                android:background="@drawable/shape_inner">
                        <TextView
                                android:id="@+id/rating_category"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:textColor="@color/dark_gray"
                                android:textStyle="bold"
                                android:layout_marginBottom="10dip" />
                            <RatingBar 
                                android:id="@+id/rating_rating"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:numStars="5"
                                android:rating="0"
                                android:stepSize="1"
                                android:focusable="false"
                                android:clickable="false"
                                />
                            <EditText 
                                android:id="@+id/rating_text"
                                android:layout_width="fill_parent"
                                android:layout_height="wrap_content"
                                android:layout_column="1"
                                android:padding="6dip"
                                android:textColor="#000000"
                                android:gravity="left|top"
                                android:lines="3"
                                android:hint="Comment"
                                android:imeOptions="actionDone" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
    
35
задан Bill the Lizard 1 November 2013 в 12:25
поделиться

1 ответ

Похоже, ListView не может должным образом обрабатывать EditTexts. Я провел небольшое исследование, и, похоже, пришел к единому мнению: «Не делайте этого». Итак, я прибег к созданию простого файла макета, который представляет собой ScrollView с LinearLayout внутри. В моем методе onCreate я раздуваю View, который использовал для своего элемента списка, и добавляю его в LinearLayout. Я также добавляю представление в список ArrayList, чтобы впоследствии сохранить данные в каждом представлении.

Звучит разумно?

19
ответ дан 27 November 2019 в 15:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: