1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. Tom299, 25.01.2012 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    Hallo,

    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;
    	}
    }
    
    main.xml
    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>
    
    user_table_item.xml
    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>
    
    
    PS: Ich hab die ListView auch schon ohne android:descendantFocusability="beforeDescendants" versucht, bringt aber nichts.
     

    Anhänge:

  2. Tom299, 25.01.2012 #2
    Tom299

    Tom299 Threadstarter Android-Experte

    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.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Eingabe auf Webseite über API mit Smartphone autorisieren Android App Entwicklung 31.05.2017
[ERLEDIGT] Listview mit Datenbank über Custom ArrayList verbinden Android App Entwicklung 22.04.2017
[ERLEDIGT] Drawer mit scrollbarem Listview Android App Entwicklung 27.03.2017
ListView fix am unteren Bildschirmrand ausgeben Android App Entwicklung 01.03.2017
ProgressBar in ListView Android App Entwicklung 03.01.2017
QR-Result in EditText darstellen Android App Entwicklung 02.01.2017
ListView Element an eine Datenbank senden Android App Entwicklung 04.12.2016
EditText für IP-Adressen? Android App Entwicklung 19.10.2016
ListView Items verknüpfen Android App Entwicklung 06.10.2016

Users found this page by searching for:

  1. android text eingabe immer letzte eingabe eingefuegt

Du betrachtest das Thema "ListView mit EditText - Eingabe wird nicht übernommen" im Forum "Android App Entwicklung",