Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

1

19.10.2014, 21:51

[Android] Wie greife ich auf ein String-Array in einem Item-Array zu?

Hallo Leute,

ich möchte mir eine App erstellen, die mir meinen aktuellen Stundenplan bzw. meine nächste Unterrichts-Stunde anzeigt. Dazu habe ich mir eine XML-Datei erstellt, die ein Item-Array als Inhalt hat. Dieses Item Array hat 5 String-Arrays mit den Namen Montag, Dienstag, Mittwoch, etc. In diesen String-Arrays sind dann jeweils 10 Strings für die einzelnen Stunden gespeichert. Zum Beispiel: "Mathe;A01;Herr Mustermann".

Mein Problem ist jetzt, dass die Get-Methoden des Item-Arrays keine String-Arrays zurückliefern können. Ich finde zumindest nur so welche wie "GetString, GetInt, GetBoolean usw. Gibts da eine andere Möglichkeit, das zu lösen oder habe ich was übersehen? Google konnte mir da leider nicht helfen... ich zähle auf euch! ;)

Ich will ein Item-Array benutzen, weil ich die Tage gerne über einen Index ansprechen würde... Ein Freund meinte, dass ich auch Datenbanken verwenden könnte. SQL kann ich, nur läuft das auch auf nem Galaxy Y, bzw. auf Gingerbread einigermaßen schnell?

Schonmal danke für eure Hilfe! :)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

idontknow

unregistriert

2

19.10.2014, 23:01

Zeig mal die XML. Bei dem was du geschrieben hast kann dir keiner helfen, das ist abhängig von dem Layout bzw. was für Views du verwendest usw.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

20.10.2014, 06:55

SQL ist natürlich schnell genug, gerade bei der winzigen Menge an Daten, die Du da speichern willst. Mobiltelefone haben eine erstaunlich hohe Rechenleistung und vergleichsweise schnelle Zugriffszeiten auf den Festspeicher. XML würde ich aber ebenfalls bevorzugen, weil es für diese Art Daten viel besser zu verwalten ist. SQL wäre hier ziemlich überflüssig, du hast ja keinerlei Aggregation, die Du auf den Daten anwenden willst. Du willst ja nur simple Daten speichern.

Was genau Du mit "ItemArray" meinst ist mir unklar. Ich würde raten, dass Du Deine Daten in einem simplen Resource-File ablegst. Wenn dem so ist, dann ist es nicht verwunderlich, dass Du keine entsprechenden Get-Methoden findest, denn Resource-Files sind gar nicht für diese Art Anwendung gedacht! Sie sind nur dafür da feste Konfigurations-Werte anhabend einer ID beim Erstellen der App abzulegen und diese während der Ausführung zu verwenden! Du willst doch nicht bei jeder Stundenplanänderung eine neue App bauen und releasen müssen!? Was Du wohl eher willst, ist den XML-Parser zu verwenden statt Resources.

@idontknown: Mit Views hat das Thema bisher gar nichts zu tun ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »BlueCobold« (20.10.2014, 07:12)


idontknow

unregistriert

4

20.10.2014, 13:38

ListView vs was weiß ich was es so gibt 7 einzelne Views?
Bin nicht sonderlich gut drin in dem kram hab nur ein paar mal dran gekratzt, aber das war so der erste Gedanke der mir kam.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

20.10.2014, 13:40

Es geht nicht um ListView, sondern um Einträge in einer XML-Datei. Das ist vom View noch ganz weit weg. Er bekommt sie aktuell noch gar nicht aus der Datei geladen, wenn ich ihn richtig verstanden habe.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

20.10.2014, 16:01

XML weiß auch nicht was ein Array ist. Du kannst dir deinen Stundenplan in XML abbilden und nach dem Parser daraus dein Array oder was auch immer du möchtest erzeugen.

Quellcode

1
2
3
4
5
6
7
8
9
10
<Stundenplan>
  <Montag>
    <Fach name="Informatik" startzeit="10:00" dauer="45min" Lehrer="Frau Müller" />
    <Fach name="Mathematik" startzeit="13:37" dauer="2h" Lehrer="Herr Mauer" />
  </Montag>
  <Mittwoch>
    <Fach name="Deutsch" startzeit="9:00" dauer="1h" Lehrer="Herr Martin" />
    <Fach name="Geschichte" startzeit="10:30" dauer="30min" Lehrer="Frau Meier" />
  </Mittwoch>
</Stundenplan>


Hier ist jetzt nur ein Beispiel. Du kannst deine Daten auch anders codieren, da gibt es ja verschiedene Möglichkeiten. Jetzt gibt es verschiedene Möglichkeiten die Daten auszulesen. Eine Möglichkeit wäre zum Beispiel XPath:

Fächer selektieren die Mittwoch stattfinden:

Quellcode

1
/Stundenplan/Mittwoch/Fach


Fach mit Index 1 selektieren das Montags stattfindet:

Quellcode

1
/Stundenplan/Montag/Fach[1]


Eine andere Möglichkeit wäre einfach über DOM zu gehen. Oder einfach mal bei Google gucken welche Parser es noch gibt und was diese unterstützen. Die Daten kannst du nun auslesen und in deine gewünschte Datenstruktur stecken. Zum Beispiel wie du es möchtest in ein Array. Das musst du dann von Hand machen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

20.10.2014, 17:56

Standardmäßig steht jeder Android-App bereits eine SQLite-Datanbank zur Verfügung, auf die dann direkt zugegriffen werden kann (man muss sich um das Erstellen der Tabellen natürlich noch selbst kümmern).
Ob eine Tabelle oder eine XML-Datei besser geeignet ist, kommt drauf an. Wenn für die einzelnen Fäche unabhängig voneinander die Informationen über Raum, Lehrer usw. eingetragen werden sollen, spricht nichts gegen XML und, wie BlueCobold schon meinte, würde eine Datenbank ihre Vorteile nicht zur Geltung bringen können. Will man aber die Lehrer, Räume, Unterrichtsfäche usw. separat speichern, damit zu den konkreten Zeiten dann aus diesen ausgewählt werden kann, dann ist das natürlich immernoch mit XML möglich, eine Datenbank könnte sich aber schon eher anbieten.

Es ist durchaus ein gutes Übungsprojekt, sollte es dir aber wirklich nur um die Verwaltung deines Stundenplans gehen, dann wäre es sinnvoller, im Play Store nach vorhandenen Apps zu suchen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

CeDoMain

Alter Hase

  • »CeDoMain« ist der Autor dieses Themas

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

8

20.10.2014, 18:36

OK da habt ihr aber schon viel geschrieben... :D Ich will versuchen eure Fragen zu beantworten:

Meine XML-Datei (Lessons.xml):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="CeDoMain">
        <item>
            <string-array name="Montag">
                <item>Mathe;A07;Herr Mustermann</item>
                <item>Freistunde;;</item>
                <item>Physik;C13;Herr Mustermann</item>
            </string-array>
        </item>
        <item>
            <string-array name="Dienstag">
                <item>Mathe;A07;Herr Mustermann</item>
                <item>Freistunde;;</item>
                <item>Physik;C13;Herr Mustermann</item>
            </string-array>
        </item>
        <item>
            <string-array name="Mittwoch">
                <item>Mathe;A07;Herr Mustermann</item>
                <item>Freistunde;;</item>
                <item>Physik;C13;Herr Mustermann</item>
            </string-array>
        </item>
        <item>
            <string-array name="Donnerstag">
                <item>Mathe;A07;Herr Mustermann</item>
                <item>Freistunde;;</item>
                <item>Physik;C13;Herr Mustermann</item>
            </string-array>
        </item>
        <item>
            <string-array name="Freitag">
                <item>Mathe;A07;Herr Mustermann</item>
                <item>Freistunde;;</item>
                <item>Physik;C13;Herr Mustermann</item>
            </string-array>
        </item>
    </array>
</resources>

Sie sind nur dafür da feste Konfigurations-Werte anhabend einer ID beim Erstellen der App abzulegen und diese während der Ausführung zu verwenden! Du willst doch nicht bei jeder Stundenplanänderung eine neue App bauen und releasen müssen!?
Wenns anders geht, ohne einen Eingabe-Dialog (in der App) zu verwenden, dann sag wie. :)

Mit dem Item-Array habe ich mich verschrieben - ich meinte "Typed Array"! Sorry! :(

@Schorsch: Wenns möglich ist, würde ich gerne von externen Bibliotheken wie XPath und so absehen. Erstmal muss ich die Ressource-Geschichte verstanden haben. ;)
@Sacaldur: Jaaa ich weiß, man kann sich auch einfach was runterladen, aber ich wollts mal selber probieren. :) Mich interresiert, wie man auf diesen "kleinen" Geräten programmiert!
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

20.10.2014, 21:20

XPath ist keine Bibliothek sondern legt lediglich fest wie du über ein XML Element iterieren kannst bzw beschreibt den Zugriff auf Daten in deinem XML Dokument. Anstatt dann mit DOM zu hantieren und über viel Code Selektionen zu machen kann man das mit XPath kompakter. Kannst aber natürlich trotzdem klassisch mit DOM arbeiten. Geht es hier überhaupt darum? Ob du die Datei jetzt im Android Dateisystem liegen hast oder von deiner Festplatte mit einer "normalen" Javaanwendung lädst macht keinen Unterschied. Du könntest die Datei auch aus dem Internet ziehen wenn du möglicherweise einen Webserver besitzt. Das ist erst mal egal. Was Blue Cobold nun meinte ist du sollst die XML Dateien nicht in die Ressourcen stecken, also nicht dahin wo deine Layouts etc liegen. Du packst die XML Datei in irgendein Verzeichnis und lädst sie von da. Wo du die Datei ablegst bleibt erst mal dir überlassen. Du kannst die Datei so zum Beispiel in den Download Ordner stopfen und von da aus laden. Ich bin mir grad gar nicht sicher wie die App am Ende im System abgelegt wird aber hier sollte es auch die Möglichkeit geben Dateien abzulegen. Das sollte sich denke ich leicht durch Google raus finden lassen. Der Rest funktioniert unter Java immer gleich und lässt sich auch schnell ergooglen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

20.10.2014, 21:40

XML weiß auch nicht was ein Array ist. Du kannst dir deinen Stundenplan in XML abbilden und nach dem Parser daraus dein Array oder was auch immer du möchtest erzeugen.

Quellcode

1
2
3
4
5
6
7
8
9
10
<Stundenplan>
  <Montag>
    <Fach name="Informatik" startzeit="10:00" dauer="45min" Lehrer="Frau Müller" />
    <Fach name="Mathematik" startzeit="13:37" dauer="2h" Lehrer="Herr Mauer" />
  </Montag>
  <Mittwoch>
    <Fach name="Deutsch" startzeit="9:00" dauer="1h" Lehrer="Herr Martin" />
    <Fach name="Geschichte" startzeit="10:30" dauer="30min" Lehrer="Frau Meier" />
  </Mittwoch>
</Stundenplan>

Schlechtes Beispiel. Das sollte
<Tag name="Montag"> sein und nicht <Montag>. Letzteres impliziert nämlich, dass Montag und Mittwoch andere Datentypen und ihre Inhalte nicht unbedingt kompatibel sind. Es sind aber beides Tage und sollten deshalb auch so abgebildet werden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige