Große Menge an Daten selben Aufbaus speichern und lesen

  • Antworten:17
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 27

17.11.2016 08:33:34 via Website

Schonmal sorry für den eventuell missverständlichen Titel!^^'
Ich habe eine Tabelle/Liste in die ich Einträge schreiben möchte. Diese Einträge haben immer den selben Aufbau. Kartenname, Anzahl, Punkte, Aktiviert (siehe Bild). Nun brauche ich eine Möglichkeit alle möglichen Karten in eine Art Kartendatenbank zu speichern, wo ich mir Infos, wie den Kartennamen und die Punkte, die sie gibt, raussuchen kann.
Die Möglichkeit einer SQL Datenbank hab ich vorerst ausgeschlossen aber nicht ganz abgeschrieben. Gibt es eine andere Art um die 50 +/- verschiedene Karten abzuspeichern? Ich hab bei manchen Apps gesehen, dass sie XML Dateien nutzen um Daten zu laden oder zu speichern aber das System ist mir noch nicht ganz klar..
Würde mich über Hilfestellung sehr freuen :)
Gruß Dominic

image

Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 6.770

17.11.2016 09:18:13 via App

Hallo Dominic,

herzlich willkommen hier im Forum (*)

also bei 50 Einträgen würde ich dir zu einer Datenbank raten, bei eins oder zwei könnte man diese in xml beziehungsweise in perferences oder ähnliches Speichern.

Du musst immer die Performance im Hinterkopf behalten.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

  • Forum-Beiträge: 2.214

17.11.2016 09:23:38 via Website

Moin Dominic,

na ? gestern keine Lust mehr dazu gehabt ? :-)

Ich kann mich Ludy nur anschliessen : z.B. Sqlite

— geändert am 17.11.2016 09:37:28

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 27

17.11.2016 10:15:37 via Website

Danke für den netten Empfang Ludy! :)
Und hallooooooo Stefan! :D Hab mir gestern noch etwas zu Intents durchgelesen und erstmal das nen bisschen das eingebaut, was ich verstanden hab und ein wenig rumprobiert :) Danke nochmal für die Hilfe^^

Habt ihr denn einen Vorschlag wo ich diese DB am besten hinterlege? Also nen Anbieter oder so? Meine Sorge ist lediglich, dass der Anbieter i-wann sagt ich hätte mich zu lange nicht eingeloggt und deswegen den Account oder so löscht.. hatte schonmal ein ähnliches Problem :(

Übrigens, ne kurze Frage nebenbei.. wie erzwinge ich einen Fokus auf eine SerachView sobald die Aktivity startet?

— geändert am 17.11.2016 10:18:07

  • Forum-Beiträge: 27

17.11.2016 10:20:39 via Website

Habt ihr denn einen Vorschlag wo ich diese DB am besten hinterlege? Also nen Anbieter oder so? Meine Sorge ist lediglich, dass der Anbieter i-wann sagt ich hätte mich zu lange nicht eingeloggt und deswegen den Account oder so löscht.. hatte schonmal ein ähnliches Problem :(

Ok hab gerade gesehen, dass SQLite in Android i-wie integriert ist^^ Werd ich mir mal genauer ansehen.. Danke!

  • Forum-Beiträge: 2.214

17.11.2016 10:30:19 via Website

Moin Dominic,

nicht so viel auf einmal - ich habe ein gewisses Alter erreicht , da musst du behutsam vorgehen :-)

na dann fange ich mal an :-)

Habt ihr denn einen Vorschlag wo ich diese DB am besten hinterlege? Also nen Anbieter oder so?

Du hast aber nirgendwo erwähnt , dass du das "online" machen möchtest, ich dachte, das wäre rein offline lokal
Sprich dich aus , dann bekommst du auch ne richtige Antwort :-)

Habt ihr denn einen Vorschlag wo ich diese DB am besten hinterlege?

Lokal : Als Datei

Übrigens, ne kurze Frage nebenbei.. wie erzwinge ich einen Fokus auf eine SearchView sobald die Aktivity startet?

Das kommt drauf an, was du vorher machst und wo dein SearchView platziert ist
http://stackoverflow.com/questions/10089993/android-how-to-focus-actionbar-searchview

— geändert am 17.11.2016 10:32:07

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 27

17.11.2016 10:46:05 via Website

nicht so viel auf einmal - ich habe ein gewisses Alter erreicht , da musst du behutsam vorgehen :-)

Oh tut mir leid :(
Werds als Datei machen. Danke!^^

image

So sieht das aktuell aus. Meine Probleme:
1. <requestFocus />in der xml sorgt nicht für Autofocus und Anzeige der Tastatur
2. Klick ich drauf wird die Tastatur angezeigt und der Button und die dann aktive SearchView rutscht nach oben =( Ich möchte, dass das ganze Fenster nach oben rutscht bzw. Button, Search, etc. bleibt wo es ist^^

— geändert am 17.11.2016 10:58:10

  • Forum-Beiträge: 2.214

17.11.2016 10:51:08 via Website

Oh tut mir leid :(

War doch ein Gag :-)

  1. Klick ich drauf wird die Tastatur angezeigt und der Button und die dann aktive SearchView rutscht nach oben =( Ich möchte, dass das ganze Fenster nach oben rutscht bzw. Button, Search, etc. bleibt wo es ist^^

Layouts / XML und deren Verhalten sind grundsätzlich manchmal recht merkwürdig und man kann es nicht nachvollziehen - damit wirst du Zukunft leben müssen.

Abgesehen davon , dass je nach Version des Betriebssystemes es IMMER Unterschiede im Verhalten geben wird .
Ergo - Brich dir kein Bein darüber , "zu" Perfekt zu sein - das hält nur unnötig auf , das wirst du auch nie für alle Versionen gleich bekommen.

Tip : Versuche mal deine Elemente in eine ScrollView zu packen und schau dann mal , wie es sich verhält

— geändert am 17.11.2016 10:57:25

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 27

17.11.2016 11:50:35 via Website

Also die ScrollView mobbt mich xD
Ich denke für das Ergenis bzw. was ich erreichen will ist mir das zu viel Aufwand :D Aber danke :)

Bleibt noch das Problem mit dem Request :(

  • Forum-Beiträge: 2.214

17.11.2016 11:51:59 via Website

Request ???

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 27

17.11.2016 13:04:24 via Website

Entschuldige, missverständlich ausgedrückt.
Ich meine das requestFocus bzw. das Problem mit dem Fokus. Ich krieg das einfach nicht hin :(

  • Forum-Beiträge: 27

23.11.2016 13:26:05 via Website

Hallo nochmal ihr zwei :)
Sorry, dass ich mich nun so lang nicht gemeldet hab aber gab ein paar Probleme, die es zu klären gab.

@Stefan
Werde ich nochmal ausprobieren aber soweit ich weiß tat ich das bereits und es hat nicht funktioniert..

@all
Ich bin mir noch nicht so ganz sicher, wie ich ne SQLite DB auf Android nutze. Orientiere mich momentan an diesem Tutorial aber ich möchte die DB ja schon bei der Installation fertig haben und eig nur noch auslesen.. Kann mir da vllt jmd helfen? Hab hier was bezüglich einer SQL Datei im Asset Ordner gelesen aber ich bin mir noch nicht ganz im Klaren wie das funktioniert bzw. wie ich dann genau darauf zugreife.. Wofür ist der Helper bzw. was macht der und was macht die Source? :'( Hab bisher nur abgetippt und halt für meine Bedürfnisse umbenannt. ShoppingMemo zu Karte usw.

Hier nochmal was ich genau möchte:
1. Ich möchte eine Karten DB, wo bereits alle Karten hinterlegt sind, erstellen, auf die meine App zugreifen kann. Die DB Datei soll somit schon bei der Installation gefüllt sein und nicht erst gefüllt werden.
2. Meine App soll dann nur noch z.B. Kartenname, Punkte, usw. auslesen und jeweils in ein TextView einfügen, die dann zsm als Item in eine Liste kommen. ([Kartenname][Punkte]) <-- Ein einziges Item

Ich hoffe so ists verständlich genug^^'

  • Forum-Beiträge: 2.214

23.11.2016 13:59:58 via Website

Hallo Dominic,

ich möchte die DB ja schon bei der Installation fertig haben und eig nur noch auslesen

Dazu musst du deine DB in den Assets folder in deinem Projekt hinterlegen und eine Synchronisation
dieses Folders bei der Installation in einem Thread durchführen. (Copy/Validate etc)

Schau dir mal diese app von mir an
https://play.google.com/store/apps/details?id=de.itedahlheimer.another_keyword_test

Da kannst du genau beim Start sehen , dass er rödelt - im android/data/[package]/ files ordner kannst du dann
die Files einsehen ( auch die assets.lst ) was da vonstatten geht.

Ist aber alles nicht ohne das Ganze - was komplett vorgefertigtes wirst du nicht finden.

— geändert am 23.11.2016 14:40:36

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 363

23.11.2016 16:10:24 via Website

Nur um das noch einmal ganz sicher zu verstehen: Es handelt sich um eine handvoll Datensätze (+/-50), die selbst wiederum nur einige Kilobyte groß sein werden? Dann würde ich wirklich noch einmal ganz scharf überlegen, ob man sich für die paar Kilobyte noch eine DB in das Programm zieht.

  • Forum-Beiträge: 2.214

23.11.2016 16:17:43 via Website

@Haakon

im Prinzip hasste recht , auch wenn Pascal und ich die DB angeraten haben .
Der Aufwand für 50 Sätze wäre definitiv überzogen :-)

Liebe Grüße - Stefan
[ App - Entwicklung ]

  • Forum-Beiträge: 27

24.11.2016 10:30:36 via Website

Jetzt bin ich verwirrt... soll ich nun doch keine DB machen?

Haakon T.

Nur um das noch einmal ganz sicher zu verstehen: Es handelt sich um eine handvoll Datensätze (+/-50), die selbst wiederum nur einige Kilobyte groß sein werden? Dann würde ich wirklich noch einmal ganz scharf überlegen, ob man sich für die paar Kilobyte noch eine DB in das Programm zieht.

Aber ja das hast du richtig verstanden. Es sind 50 Datensätzen +/-, die alle nur aus 5 Einträgen (mit ID 6) bestehen.
Kartenname (String)
Kartentyp (enum/String bin mir noch nicht sicher was besser ist)
Punkte (byte)
Power (byte)
canBeActive (boolean)

Abgesehen von canBeActive möchte ich alle nur in eine TextView einbinden und diese dann in einer Liste zeigen.
canBeActive wird dann in einer Methode weiterverarbeitet, die dann, sollte da true drinstehen, Einfluss auf die angezeigten Punkte hat (in der Regel einfach ob die Karte 0 oder 5 Punkte gibt) und in der TextView "Aktiviert" ein Ja oder Nein ausgibt.


Um nochmal kurz auf das Problem mit der SearchView zu kommen.
@Stefan: Ich habe das nun eingefügt aber er kennt i-wie menu nicht bei menu.findItem().getActionView():(

— geändert am 24.11.2016 11:20:39

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.305

24.11.2016 17:19:10 via Website

Zur Search-View:
Du musst dir ein MenuObjekt als Klassenvarialbe speichern, wenn es in onCreateOptionsMenu erstellt wird:

Menu myMenu;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.inflate(...);
myMenu = menu;
}

//Dann benutzen
{
if(myMenu!=null)
{
myMenu.finditem(..)...;
}

Ansonsten für die Daten musst letztendlich du entscheiden was du gerne willst und womit du ambesten Klarkommst.
DB ist eine Variante, aber du kannst auch einen File (z.b. XML oder Json Format) nehmen und die Daten darin ablegen.
Je nachdem wie gut du mit dem programmieren klarkommst. Für dich würde hier eine Datei denke ich mal ausreichen.

— geändert am 24.11.2016 17:20:47

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