Mit generierte Edittext-Felder, in die richtige Spalte schreiben

  • Antworten:9
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 82

18.09.2020, 09:16:25 via App

Hallo zusammen,
ich habe mit Itext eine Tabelle erstellt die ich gerne füllen möchte.

Da ich nicht immer alle Spalten von der Tabelle brauche, lasse ich mir die Edittext-Felder nach Bedarf genieren.

Nur benutze ich ein Text-Spinner, um die Richtige Spalte aus der Tabelle auszuwählen.

In der Switch-Case-Verzweigung habe ich etwa so geschrieben :

Switch(BlaBla) {

case "Kategorie 1" :

//generierte Edittext

etPreis.getText().toString()
etKilogramm.getText().toString()

break:

case "Kategorie 2" :

etPreis.getText().toString()
etKilogramm.getText().toString()

break:

}

Nur wie schaffe ich es, dass in der Tabelle in die richtige Spalte die Werte eingetragen werden?

Falls ihr den Code sehen wollt von der Tabelle, müsst ihr noch warten, da ich momentan noch auf der Arbeit bin!

Diskutiere mit!
  • Forum-Beiträge: 11.168

18.09.2020, 10:20:15 via Website

Du bruchst eine Datenstruktur, die dir deine Tabelle abbildet.
Am einfachsten mit Arrays oder Listen.

z.b. ArrayList<ArrayList<String>>
Die erste Liste sind die Zeilen und jede Zeile hat eine Liste von Spalten.
Jetzt dann kannst du die Liste(n) passen füllen und am ende wieder auswerten und ins PDF generieren

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 82

18.09.2020, 11:05:46 via App

Hallo Pascal P.,

Die Tabelle habe ich schon mit Itext erstellt:

PdfPTable table = new PdfPTable(3);

        // Set First row as header

        table.setHeaderRows(1);

        // Add header details

        table.addCell("Fruit");

        table.addCell("Quantity");

        table.addCell("Cost");
        // Add the data

        table.addCell(Variable);

        table.addCell("5");

        table.addCell("10");

        // Add more data

        table.addCell("Orange");

        table.addCell("6");

        table.addCell("6");
        document.add(table);


        document.close();

In den table.addcell() sollen die Werte von den generierten Edittext stehen.

Gruß,

Mr1000

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 11.168

18.09.2020, 11:16:37 via Website

Und was ist jetzt das Problem?
Dann bekommst du doch die Daten da einfach rein, musst sogar nicht mal über die zwischen Datanstruktur gehen.

Einfach beim auswerten der Felder + Spinner die Tabelle füllen und fertig oderübersehe ich was?

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 82

18.09.2020, 11:31:32 via App

Mal ne dumme Idee.

Wenn ich die Werte in eine andere Activity weiterleiten möchte, wäre SharedPreferences eine gute Idee?

Ich habe mir nämlich gedacht, dass man in der zweite Activity mit einer if-Verzweigung SharedPreferences durchsucht und in die richtige Spalte schreibt.

— geändert am 18.09.2020, 19:37:37

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 11.168

18.09.2020, 11:47:05 via Website

if-Schleife

If ist eine Verzweigung keine Schleife -- sorry musste sein ;)

Ja das geht theoretisch auch, macht es dir aber aufwändiger.
Warum muss es in einer eigenen Activity sein?
Die Daten musst du ja nicht in den SharedPreferences Speichern, die müssen ja nicht beim nächsten App Start noch da sein oder?

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 82

18.09.2020, 21:05:40 via Website

Hallo Pascal,

In einen Fragment habe ich die Edittext-Felder mit den Spinner und in in ein anderen Fragment, werden die Werte zusammen getragen und in eine PDF-Datei geschrieben

Die erste Liste sind die Zeilen und jede Zeile hat eine Liste von Spalten.

    List<String> Zeilen = new ArrayList<String>();

    Zeilen.add("Zeile1");
    Zeilen.add("Zeile2");
    Zeilen.add("Zeile3");
    Zeilen.add("Zeile4");


    List<String> Spalten = new ArrayList<String>();

    Spalten.add("Früchte");
    Spalten.add("Senf");
    Spalten.add("Veganer");
    Spalten.add("programmieren");



List<string>xyz new List[2];
         xyz[0] = Zeilen;
        xyz[1] = Spalten;

Dann mit eine for-Schleife alles ausgeben,meintest du das so?

Gruß,

mr1000

— geändert am 18.09.2020, 21:07:18

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 1.433

18.09.2020, 22:50:22 via Website

Hallo wenn du mit Fragmenten arbeitest kannst du doch die Listen in der Activity erstellen.
Und von den Fragmenten darauf zugreifen dafür brauchst du doch keine SharedPreferences.

Die doppelte Liste von Pascal wäre vielleicht einfacher dann sparst du dir das Array.

 ArrayList<ArrayList<String>>

— geändert am 18.09.2020, 22:53:24

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 82

19.09.2020, 16:13:34 via Website

Mittag zusammen,

ich verstehe leider nicht, wie ich das mit der Liste machen soll.

Es wäre nett, wenn ihr mir mit eine Informationsquelle helfen könntet,da ich auch was dazu lerne möchte.

Mein Problem:

Wenn ich die App starte wird gefragt, wie viele Spalten man füllen möchtet.
Indem Fall möchte ich gerne zwei Spalten füllen,dann wird mir ein Spinner und drei Edittext-Felder generiert.

Mit den Spinner möchte ich auswählen welche Spalte ich füllen möchte.
In den drei Edittext-Felder gebe ich meine Werte ein.

Habe ich das getan, wird per Button eine neues Fragment geöffnet, wo ich dann andere Daten eingebe.

Nur wie schaffe ich es davor, dass die Daten in die Liste gespeichert wird?

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                        @Override
                        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id)



                        {

                            switch (spinner.getItemAtPosition(position).toString())
                            {

                                case "Schrott,Stanzabfälle":

                                    list.add(etPreisKg.getText().toString());
                                    list.add(etGewicht.getText().toString());
                                    list.add(etBetrag.getText().toString());

                                    break;

                                case "E-Motore":

                                    list.add(etPreisKg.getText().toString());
                                    list.add(etGewicht.getText().toString());
                                    list.add(etBetrag.getText().toString());

                                    break;

                                   default:
                                    Toast.makeText(getContext(),"Fehler",Toast.LENGTH_SHORT).show();

                            }


                        }

                        @Override
                        public void onNothingSelected(AdapterView<?> parentView) {
                            // your code here
                        }

                    });


                    KundenInfobt.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            Intent intent = new Intent(getActivity(), CustomActivity.class);
                            startActivity(intent);
                        }
                    });

Bild: https://ibb.co/7R3x8t5

mr1000

— geändert am 19.09.2020, 16:22:46

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 1.433

19.09.2020, 17:08:26 via Website

Hallo du hast ja die Werte in der Liste gespeichert.
Wo ist jetzt das Problem dies in die PDF Datei zuspreichen?

Du sagst ja das du das schon kannst.

Um von einen Fragment zum anderen Fragment oder auch Activity daten zu übergeben würde ich zu
Singelton oder neuer zu ViewModel greifen.

Aber das wurde dir auch schon im anderen Forum / Thrread gesagt.

Oder auch eine Klassen Variable in der Activity. Wie ich auch schon sagte.

public class MainActivity extends AppCompatActivity {
    public  ArrayList<String> liste;
    .....
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    liste  = new ArrayList();
    .....

// im Fragment

    MainActivity activity = (MainActivity) getActivity();
    activity.liste.add("test");

— geändert am 20.09.2020, 16:38:00

Hilfreich?
Diskutiere mit!