So habe ich eine EditText
und eine ListView
darunter. Ich höre auf die KEYCODE_ENTER
gedrückt werden und danach, ich bin ein Eintrag in der Listview-Adapter hinzufügen und notifyDataSetChanged()
Methode aufrufen. Überraschenderweise, aber danach, wird der allererste Punkt in der Listenansicht fokussiert anstatt zuvor fokussiert auf EditText
.ListView Stealing Fokus Formular EditText nach dem erneuten Laden
Hier ist mein Layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:imeOptions="actionSearch"
android:singleLine="true"/>
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Hier ist, was ich tun, wenn die Enter-Taste
mTextEdit.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
// modifying data set
onScanDataReceived(mTextEdit.getText().toString().trim());
BaseAdapter adapter = (BaseAdapter) mListView.getAdapter();
adapter.notifyDataSetChanged();
mTextEdit.setText(null);
return true;
}
return false;
}
});
Das Problem ist eindeutig mit Listview Nachladen gedrückt wird, denn wenn ich adapter.notifyDataSetChanged();
die Zeile aus kommentieren den Fokus ist immer noch auf der EditText
.
Gibt es eine Methode, um den Fokus auf EditText
nach dem erneuten Laden der ListView
zu halten?
P.S. Ich habe versucht, Anruf requestFocus()
auf dem editText, nachdem ich die Daten ohne Erfolg neu zu laden.
Nun, das wird definitiv funktionieren (nicht immer, da die Verzögerungszeit ziemlich willkürlich ist), aber ich suchte nach einem 'kugelsicheren' Ansatz. – evil159
Egal, es funktioniert, ich habe beschlossen, mit sicheren 200ms zu bleiben. – evil159