Tengo un ListView
donde he definido el diseño de cada elemento en un archivo XML por separado. En este archivo he incluido un RatingBar
y un EditText
.Buggy ListView me pone triste
He creado programáticamente 7-8 elementos en este ListView
. Cuando me desplazo a través de ellos, parece ser bastante defectuoso. He aquí algunos ejemplos:
Si fijo foco al
EditText
en la primera fila y luego desplazarse por laListView
, al azarEditTexts
de otras filas tendrá foco. Parece ser que el siguienteEditText
después de que el enfocado desaparece recibe el foco. Quizás esto es intencional, pero, como usuario, parece muy extraño.Si fijo foco a un
EditText
, reciben un teclado virtual, escriba algo, y haga clic en el botón "Done" en mi teclado virtual, elEditText
vaciará tan pronto como desaparece el teclado virtual.A veces, cuando hago clic en un
EditText
, recibo un teclado virtual y comienzo a escribir letras, las letras desaparecerán tan pronto como las escriba.Cuando hago clic en un
EditText
, el teclado virtual se manifiesta, pero elEditText
pierde el foco y tengo que haga clic en elEditText
nuevo.Aunque configuré
RatingBar
en , si muevo la rueda de desplazamiento, todavía capta el foco.
Uno de mis problemas es todos los elementos de la lista visibles consiguen vuelve a dibujar cuando escribe un carácter en el teclado virtual (y puesto que el texto de la EditText
se establece en algunos datos, que está vacío, que se limpia. No entiendo por qué Android decidiría volver a dibujar la lista cada vez que escribo un carácter.
Aquí está el XML que estoy usando para dibujarlas. Son burbujas blancas, con una frontera gris, y algo de texto, a RatingBar
y EditText
adentro:
<?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>
Acabo de votar porque me encanta su pregunta. ¿Qué tan poderoso es tu dispositivo virtual? – Nix
Estoy de acuerdo con Nix. – Mike
Gracias. Lo único que hice al crear el dispositivo virtual (simplemente escribí "VD" aquí y pensé que lo deletrearía en su lugar) fue escribir un nombre y seleccionar el objetivo (2.1). Todo lo demás es predeterminado. – Andrew