O Buggy ListView me deixa triste
eu tenho umListView
onde defini o layout de cada item em um arquivo XML separado. Neste arquivo eu incluí umRatingBar
e umEditText
.
Criei programaticamente 7-8 itens nesteListView
. Quando eu os folheio, parece ser um buggy. aqui estão alguns exemplos:
Se eu definir o foco para oEditText
na primeira linha e role para baixo oListView
, aleatóriaEditTexts
de outras linhas terão foco. Parece que o próximoEditText
depois que o focado desaparece recebe o foco. Talvez isso seja intencional, mas, como usuário, parece muito estranho.
Se eu definir o foco para umEditText
, receba um teclado virtual, digite algo e clique no botão "Concluído" no meu teclado virtual, noEditText
ficará vazio assim que o teclado virtual desaparecer.
Às vezes, quando clico em umEditText
, receba um teclado virtual e comece a digitar letras, as letras desaparecerão assim que eu as digitar.
Quando clico em umEditText
, o teclado virtual aparece, mas oEditText
perde o foco e eu tenho que clicar noEditText
novamente.
Mesmo que eu tenha definido oRatingBar
parafocusable="false"
, se eu mover minha roda de rolagem, ela ainda terá foco.
Um dos meus problemas é que todos os itens visíveis da lista são redesenhados quando digito um caractere no teclado virtual (e desde que o texto doEditText
é definido como alguns dados vazios, eles são limpos. Não entendo por que o Android decidiu redesenhar a lista toda vez que digito um personagem.
Aqui está o XML que estou usando para desenhá-los. São bolhas brancas, com uma borda cinza e algum texto, umaRatingBar
e umEditText
dentro:
<?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>