| |||||||
Das Thema "ListView mit EditText - Eingabe wird nicht übernommen" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
| ich bin gerade total am verzeifeln. Hab in meinem Projekt eine ListView, die u.a. EditText Views enthält. Android Version ist 2.3.3. Die Eingaben, die ich in den EditTexten mache, werden immer wieder zurückgesetzt und ich kapiers einfach nicht mehr. In meinem richtigen Projekt hab ich noch FocusListener, TextWatcher und InputFilter dabei, aber ich hab nun ein Testprojekt angelegt, erst mal ganz ohne diese Listener und habe das gleiche Verhalten ... Vielleicht hat jemand eine Idee, woran es liegen könnte, daß die Eingabe immer wieder zurückgesetzt wird. Außerdem wird die Numerische Tastatur immer durch die Text-Tastatur überblendet. Für das EditText gilt android:inputType="numberDecimal" und die Num-Tastatur kommt auch beim Klick, aber direkt danach wird sie überblendet, was ich auch nicht verstehe. Das hat alles schon mal funktioniert ... (Übrigens, in meinem richtigen Projekt mit TextWatcher bekomm ich beim Aufrufen der View schon 2 oder 3 mal ein TextChange für jedes Edit-Element auf der ListView. Und wenn ich in 1 Feld was ändere werden alle Felder wieder auf ihren letzten Wert gesetzt ... alles komisch) Im Anhang hab ich das Test-Projekt als Zip-File, falls es sich mal jemand ansehen möchte. Die Klassen und XML sehen so aus: Code: public class EditListViewTestActivity extends Activity {
private ListView listViewUser = null;
private UserArrayAdapter adapterUser;
private ArrayList<User> listUser;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listViewUser = (ListView)findViewById(R.id.user_listView);
listUser = new ArrayList<User>();
adapterUser = new UserArrayAdapter(this, R.layout.user_table_item, listUser);
listViewUser.setAdapter(adapterUser);
listUser.add(new User("AAAAA", 12));
listUser.add(new User("BBBBB", 22));
listUser.add(new User("CCCCC", 32));
listUser.add(new User("DDDDD", 42));
listUser.add(new User("EEEEE", 52));
adapterUser.notifyDataSetChanged();
}
} Code: public class UserArrayAdapter extends ArrayAdapter<User> {
private int resource;
private TableLayout userView;
public UserArrayAdapter(Context context, int resourceId, List<User> listUser) {
super(context, resourceId, listUser);
this.resource = resourceId;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final User user = getItem(position);
if (convertView == null) {
userView = new TableLayout(getContext());
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(resource, userView, true);
}
else {
userView = (TableLayout)convertView;
}
TextView tvName = (TextView)userView.findViewById(R.id.user_tvName);
tvName.setText(user.getName());
EditText editAge = (EditText)userView.findViewById(R.id.user_editAge);
editAge.setText(user.getAge().toString());
return userView;
}
} Code: <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ListView
android:id="@+id/user_listView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:divider="@android:color/black"
android:dividerHeight="1dp"
/>
</LinearLayout> Code: <?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow
android:id="@+id/user_table_item_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="3dp"
>
<TextView
android:id="@+id/user_tvName"
android:layout_width="0dp"
android:layout_weight="0.5"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@android:style/TextAppearance.Medium"
android:paddingLeft="3dp"
android:gravity="left|center_vertical"
/>
<EditText
android:id="@+id/user_editAge"
android:layout_width="0dp"
android:layout_weight="1.0"
android:layout_height="wrap_content"
android:textAppearance="@android:style/TextAppearance.Medium"
android:singleLine="true"
android:inputType="numberDecimal"
android:gravity="center_vertical"
/>
</TableRow>
</TableLayout> |
| | |
| | #2 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
|
Trägt man in der manifest android:windowSoftInputMode="adjustPan" für die Activity ein, dann verhält sich die Tastatur normal und die Nummern-Eingabe bleibt da. Mit dem TextWatcher hab ich danach nur Probleme gehabt, bin jetzt wieder zu meinem FocusListener zurück und frage focusLost ab. Beim drücken des Back-Button erzwinge ich nun einen FocusLost, damit meine Eingabe auch erkannt wird, falls ich direkt nach der Eingabe mit BACK die Activity verlasse. |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Edittext eingabe im alert anzeigen?! | mitch_HD2 | Android App Entwicklung | 15 | 05.12.2011 14:54 |
| Datenbankänderung wird nicht übernommen ... | Phreakeyy | Android App Entwicklung | 2 | 18.11.2011 13:01 |
| IconAnordnung wird nicht übernommen | SachsenPowl | Samsung Galaxy S2 (I9100) Forum | 0 | 19.08.2011 19:31 |
| ListView mit EditText Elementen | jenson | Android App Entwicklung | 6 | 05.08.2011 08:04 |
| Umbenennung wird nicht übernommen | janemann77 | Samsung Galaxy Tab Forum | 5 | 25.11.2010 13:20 |