Buggy ListView macht mich traurig
Ich habe eine ListView
wo habe ich definiert das layout der einzelnen Elemente in einer separaten XML-Datei. In dieser Datei habe ich einen RatingBar
und ein EditText
.
Ich habe programmgesteuert erstellt 7-8 Elemente in diesem ListView
. Wenn ich Blättern Sie durch Sie, so scheint es Recht buggy ist. Hier sind einige Beispiele:
- Wenn ich den Fokus auf die
EditText
in der ersten Zeile und dann nach unten scrollen, dieListView
randomEditTexts
aus anderen Reihen wird gefasst. Es scheint zu sein, dass die nächsteEditText
nach dem fokussierten verschwindet man erhält den Fokus. Vielleicht ist dies beabsichtigt, aber, als Benutzer, so scheint es sehr seltsam. - Wenn ich den Fokus auf eine
EditText
, erhalten Sie eine virtuelle Tastatur, geben Sie etwas ein, und klicken Sie auf die Schaltfläche "Fertig" auf meiner virtuellen Tastatur, dieEditText
wird leer, sobald die virtuelle Tastatur verschwindet. - Manchmal, wenn ich auf eine
EditText
, erhalten Sie eine virtuelle Tastatur, und starten Sie die Eingabe von Buchstaben, die Buchstaben verschwinden, sobald ich Ihnen geben. - Wenn ich auf eine
EditText
die virtuelle Tastatur zeigt sich, aber dieEditText
Fokus verliert und ich auf denEditText
wieder. - Obwohl ich eingestellt habe das
RatingBar
zufocusable="false"
, wenn ich meine Scrollrad, es noch packt Fokus.
Eines meiner Probleme ist, alle sichtbaren Elemente der Liste erhalten Sie neu gezeichnet, wenn ich ein Zeichen auf der virtuellen Tastatur (und da der text der EditText
gesetzt, um einige Daten, die leer ist, wird er gelöscht. Ich verstehe nicht, warum Android entscheiden würde, neu zu zeichnen, die Liste jedes mal, wenn ich ein Zeichen eingeben.
Hier ist die XML, die ich verwende, um Sie zu zeichnen. Sie sind weiße Bläschen, die mit einer grauen Grenze, und etwas text, ein RatingBar
und ein EditText
innen:
<?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>
InformationsquelleAutor der Frage Andrew | 2010-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es klingt wie ListViews sind nicht in der Lage zu handhaben EditTexts gut. Ich habe einige der Forschung getan und der Konsens scheint zu sein, "das nicht." So was habe ich gegriffen, ist das erstellen einer einfachen layout-Datei, die eine ScrollView mit LinearLayout innen. In meiner onCreate Methode, die ich aufblasen der Ansicht, ich für meinen Punkt der Liste und fügen Sie es dem LinearLayout. Ich bin auch durch die Ansicht zu einer ArrayList, damit ich retten kann die Daten in jeder Ansicht später auf.
Klingt das vernünftig?
InformationsquelleAutor der Antwort Andrew
Gut,fügen Sie diese zu Ihrer Tätigkeit im manifest...
Beispiel...
InformationsquelleAutor der Antwort Sreekanth Karumanaghat
Ich hatte das gleiche problem. Meine EditText innerhalb von LisView war verlieren den Fokus, wenn die Tastatur erscheint, so auf getView aus dem ListView-Element lege ich
Und diese Arbeit für mich.
InformationsquelleAutor der Antwort Marylia Gutierrez
Diese zwei Schritte aufgelöst, ein ähnliches Problem hatte ich (EditText eine Zeile in ListView + lustige Tastatur-Verhalten).
AndroidManifest.xml Datei auf die Aktivität, bei der die ListView ist
dargestellt.
Dies ist der eigentliche Beispiel:
AndroidManifest.xml
layout.xml Datei
Getestet habe ich es auf dem Samsung Galaxy S3 und es funktioniert gut mit Samsung so gut wie SwiftKey-Tastaturen.
InformationsquelleAutor der Antwort pepan
habe ich einige Problem gelöst ich kommentiere einfach diese Zeile
InformationsquelleAutor der Antwort ashish