ListView-Elemente konzentrieren Verhalten

Ich versuche zu schaffen, eine ListView (mit custom CursorAdapter) EditText Elemente, so dass EditTexts erscheinen nicht auf den ersten und editierbar auf lange auf. Dann würde der Benutzer Bearbeiten EditText Inhalt und EditText würde speichern Sie die änderungen der db-bei Fokus-Verlust. Aber ich habe laufen in eine wirklich unangenehme Verhalten, dass mich daran hindert, dies zu tun.

1) ich habe eingestellt, dass meine EditTexts zu android:focusable="false" und android:focusableInTouchMode="false" im XML-Format.

2) ich habe eine OnItemLongClickListener in meinem ListActivity dass Folgendes macht:

public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
{
    Log.d("NLAc", "longClick called");
    EditText et = (EditText) view.findViewById(R.id.etFolderName);
    et.setFocusable(true);
    et.setFocusableInTouchMode(true);
    return true;
}

3) Und wenn ich Ansichten erstellen, in meinem adapter lege ich die folgenden Fokus-change-listener:

public void onFocusChange(View v, boolean hasFocus) 
{
    if (hasFocus)
{
    EditText et = (EditText)v;
    Log.d(TAG, "hasFocus true called " + et.getText());
    et.setText("focused");
    et.setSelection(et.length());
}
else
{
    EditText et = (EditText)v;
    Log.d(TAG, "hasFocus false called " + et.getText());
    et.setText("unfocused");
    et.setFocusableInTouchMode(false);
            //TODO Save to DB
}

}

Was passiert, ist, dass wenn ich lange auf das erste Element bekomme ich Folgendes im log:

longClick called

hasFocus true called item1

hasFocus false called focused

Wenn ich die Zeile entfernen die Einstellung Isoliertes false (et.setFocusableInTouchMode(false);) bekomme ich ein anderes hasFocus true called unfocused.
Offenbar gehen die Dinge wie diese:

1) EditText Fokus erhält, wenn set justierbares

2) LinearLayour mit meinem ListView Fokus verliert und fordert interne unFocus() auf alle Kinder, einschließlich meiner EditText

3) EditText Fokus verliert

4) EditText Fokus erhält - aus welchem Grund auch immer jetzt.

Dieses Verhalten hindert mich, deaktivieren EditText bei Fokus-Verlust bzw. unfocusable, bis der nächste lange auf, kommt durch, die ist, was ich will.
Kann jemand empfehlen, was ich möglicherweise fehlen? Oder erklären Sie dieses Verhalten? Alle Lösungen geschätzt.

sind Sie sicher, dass es eine gute Sache, zum speichern der Eingaben von Benutzern auf diese Weise? Sie haben in der Regel eine Schaltfläche zum speichern der Benutzereingaben in die Daten und gehen Sie weiter zusammen mit Ihrem Datenfluss. oder speichern Sie es bei der Tätigkeit geht onPause () - oder der Nutzer lässt eine Aktivität. es erspart Ihnen eine Menge Zeit und vermeiden Schmerzen als gut. einfach nur sagen...
Ich denke über das hinzufügen von ein wenig "fertig" button, aber ich hatte wirklich gehofft, ich könnte nur sparen Sie auf alles andere, wie Fokus verlieren oder 'enter' auf der soft-Tastatur.
Ich verstehe, aber ich würde wirklich empfehlen, sich auf ux.stackexchange.com/questions/8868/... und natürlich androidpatterns.com und hier geht GEBEN Sie Ihre soft-KB-Taste stackoverflow.com/questions/4451374/...
Vielen Dank für die interessanten links, aber ich bin trotzdem begierig, zu verstehen, was Los ist mit den Fokus 🙂

InformationsquelleAutor devmiles.com | 2012-01-23

Schreibe einen Kommentar