- Forum-Beiträge: 14
07.01.2012, 18:08:09 via Website
07.01.2012 18:08:09 via Website
ich sitze gerade an einem Formular (Test). Ein User trägt in zwei EditText Felder "Artikel" und "Meng"e ein, daraus entsteht ein Einkaufszettel.
Artikel und Menge werden einer ArrayList hinzugefügt.
Der User kann über den Button b1 die Daten auf den Einkaufszettel speichern und danach weitere Elemente hinzufügen. Über den Button b2 wird eine neue Activity (EinkaufszettelAnzeigen) aufgerufen, die über eine ListView seine Eingaben darstellt. Wenn alles passt, wird der Zettel gespeichert, ansonsten verworfen.
Mein Problem dabei ist, dass der letzte Eintrag (Menge) immer doppelt übertragen wird. Ich finde den Fehler nicht, da auch im Debugger bis zum Intent alles korrekt zu sein scheint.
Bsp. Artikel "a" Menge "1" wird in der neuen Activity als a,1,1 ausgegeben, obwohl der Vergleich (Methode, die den letzten Eintrag des Users abfängt und prüft, ob sich dieser Wert bereits in der ArrayList befindet) true ergibt.
Anbei poste ich meinen Code
(sorry für die Länge, unwichtiges hab ich so weit es geht entfernt)
[code]
public class Test extends Activity{
private static EditText Artikel=null;
private static EditText Menge=null;
ArrayList<String> einkauf=new ArrayList<String>();
String artikel=null;
String menge=null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
setTitle("Einkaufszettel anlegen");
// wenn ein rekursiver Aufruf stattfindet
Bundle bundle=getIntent().getExtras();
if(bundle==null){
}else{
String [] array=bundle.getStringArray("array");
int l=array.length;
for(int i=0;i<l;){
einkauf.add(array[i]);
i++;
}}
Artikel=(EditText)findViewById(R.id.eintragenArtikel);
Menge=(EditText)findViewById(R.id.eintragenMenge);
Artikel.setInputType(1);
Menge.setInputType(2);
Button weiter=(Button)findViewById(R.id.b1);
Button speichern=(Button)findViewById(R.id.b2);
Button abbrechen=(Button)findViewById(R.id.b3);
weiter.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
addArtikel();
}
});
speichern.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
speicherEinkaufzettel();
}
});
abbrechen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent in=new Intent();
in.setClass(Test.this, Artikel_anzeigen.class);
startActivity(in);
}
});
Artikel.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
event.getDisplayLabel();
if(keyCode==66 & event.getAction()==KeyEvent.ACTION_DOWN){
getArtikel();
return true;
}
return false;
}
});
Menge.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
event.getKeyCode();
if(keyCode==66 & event.getAction()==KeyEvent.ACTION_DOWN){
getMenge();
return true;
}
return false;
}
});
}
public void getArtikel(){
artikel=Artikel.getText().toString();
einkauf.add(artikel);
}
public void getMenge(){
menge=Menge.getText().toString();
einkauf.add(menge);
}
public void speicherEinkaufzettel(){
int a=einkauf.size();
Intent in=new Intent();
in.setClass(Test.this, EinkaufszettelAnzeigen.class);
if(Vergleich()==true){
String []ar =new String[a];
einkauf.toArray(ar);
in.putExtra("array",ar);
startActivity(in);
}
String []ar =new String[a+1];
einkauf.add(menge);
einkauf.toArray(ar);
in.putExtra("array",ar);
startActivity(in);
}
public void addArtikel(){
int a=einkauf.size();
Intent in=new Intent();
in.setClass(Test.this, Test.class);
if(Vergleich()==true){
String []ar =new String[a];
einkauf.toArray(ar);
in.putExtra("array",ar);
startActivity(in);
}
String []ar =new String[a+1];
einkauf.add(menge);
einkauf.toArray(ar);
in.putExtra("array",ar);
startActivity(in);
}
public boolean Vergleich(){
String vergleich=einkauf.get(einkauf.size()-1);
menge=Menge.getText().toString();
if (vergleich.equals(menge)){
return true;
}
return false;
}
}
// Die zweite Activity
public class EinkaufszettelAnzeigen extends Activity{
public void onCreate(Bundle SavedInstanceState){
super.onCreate(SavedInstanceState);
setContentView(R.layout.einkaufzettel_anzeigen);
Bundle bundle=getIntent().getExtras();
String [] array=bundle.getStringArray("array");
ListAdapter adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, array);
ListView einkauf=(ListView)findViewById(R.id.added_food);
einkauf.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
einkauf.setAdapter(adapter);
}
[/code]
vielen Dank im Voraus
Viktor
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.