Buttons + Datenbank

  • Antworten:13
  • Bentwortet
Sebastian Klaiber
  • Forum-Beiträge: 44

29.10.2012, 15:32:24 via Website

Hallo,

in meiner ersten Activity erzeuge ich eine Datenbank in der 1-9 Einträge gespeichert werden können. Nun würde ich gern in einer zweiten Activity soviele Buttons erzeugen wie Einräge in der Datenbank vorhanden sind.

Die Buttons sollen auch den Text bekommen der in der Datenbank gespeichert ist.

Leider hab ich gerade keine Ahnung wie ich das umsetzten soll.

Hoffe das mein Problem halbwegs verständlich ist.

Vielen Dank

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

29.10.2012, 16:32:17 via Website

Wo genau ist jetzt Dein Problem?

* Du weißt nicht wie man Daten aus der Datenbank liest?

* Du weißt nicht wie man Views inflatet?

* ...

Und hier meine Frage: Wer oder was entscheidet welches Layout genommen wird (Screen links oder rechts in Deinem Bild).

Antworten
Sebastian Klaiber
  • Forum-Beiträge: 44

29.10.2012, 16:41:27 via Website

Der Linke Bildschirm ist ein Konfigurator der beim ersten Start gestartet wird. Sind noch paar andere Schritte dabei.
Hier leg ich fest wie viele Buttons ich brauche.
z.b: vier EInträge vier Buttons oder drei Einträge drei Buttons.

Wie man Daten aus ner Datenbank ließt ist mir schon klar.

Was mir nicht ganz klar ist wie die XML ausschauen muss, da die Anzahl ja variieren kann. Zwischen 1 - 9

Kann auch sein das ich gerade nen Denkfehler hab.

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

29.10.2012, 18:48:56 via Website

Ich verstehe zwar immer noch nicht, wozu das gut sein soll (ich würde für sowas eine Liste benutzen), aber wenn ich das herstellen müsste, dann würde ich ein .xml machen mit 9 Buttons, und zur Laufzeit die benötigten beschriften und die nicht benötigten "verstecken".

Antworten
Sebastian Klaiber
  • Forum-Beiträge: 44

29.10.2012, 19:17:54 via Website

1Cursor cursor = db.getAllCursor();
2 LinearLayout linearLayout = (LinearLayout)findViewById(R.id.main_layout);
3
4 if (cursor.moveToFirst()) {
5 //Loop Through Cursor and add items to ArrayList
6 do {
7 Button btn = new Button(this);
8 // Button btn = (Button)getLayoutInflater().inflate(R.layout.btn_template, null);
9 btn.setText(cursor.getString(cursor.getColumnIndex("name")));
10 btn.setId(cursor.getInt(cursor.getColumnIndexOrThrow("_id")));
11 btn.setTextColor(Color.parseColor("#7ea6e0"));
12 btn.setBackgroundResource(R.drawable.button_custom);
13 btn.setOnClickListener(this);
14 linearLayout.addView(btn, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
15 LinearLayout.LayoutParams.WRAP_CONTENT));
16 } while (cursor.moveToNext());

hab das ganze jetzt so gelöst!

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

29.10.2012, 22:29:56 via Website

@Harald: die Grafik hab ich schon gesehen, und auch die Anmerkung, das die Liste zum Konfigurieren sein soll.
Das Konzept ist mir halt schleierhaft - warum 9 und nicht 10 oder 8? Weil das auf einem bestimmten Display gut aussieht? Was passiert, wenn der User zu lange Namen vergibt?
Sowas halt.

@Sebastian: und damit bekommst du eine 2spaltige Darstellung wie in der Vorgabe?

Antworten
Sebastian Klaiber
  • Forum-Beiträge: 44

29.10.2012, 22:37:22 via Website

Es sollen max. 9 Buttons sein da ich genau so viele Ausgänge bei meinem Arduino Board frei habe die ich mit den Buttons auf LOW oder HIGH stelle.

Ne die zwei reihige Anordnung hab ich noch nicht geschafft. Es fehlt auch noch das ich die Buttons per drag & drop verschieden kann.

Bin für jede Hilfe dankbar!

Ciao

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

29.10.2012, 23:49:59 via Website

Ah, das erklärt dann vermutlich auch, warum du für 9 Texte eine Datenbank verwendest -- vermutlich werden es am Ende verschiedene Sets von Buttons?

Wie du die 2spaltige Darstellung erhältst, habe ich weiter oben schon skizziert, nebenbei hat diese Methode noch den Vorteil, das du für verschiedene Bildschirmgrößen, für Portrait/Landscape etc. jeweils eigene, angepasste Layouts herstellen kannst, so das die Präsentation immer passend zum Schirm erscheint.

Die gewünschte Anordnung erhältst du am einfachsten mit einem TableLayout, alternativ bekommt man das aber auch mit Relative- oder LinearLayouts hin.

Antworten
Sebastian Klaiber
  • Forum-Beiträge: 44

30.10.2012, 07:46:19 via App

Aber wie kann ich die benötigen Button dann auf visible stellen muss die dann ja irgendwie mit ner schleife durchlaufen. Weiß gerade nicht wie ich das realisieren soll.

Ciao

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

30.10.2012, 09:23:24 via Website

Ich würde mir die IDs in ein Array schreiben, so das ich einen Schleifenzähler verwenden kann.

Antworten
Sebastian Klaiber
  • Forum-Beiträge: 44

31.10.2012, 14:28:23 via Website

Hat funktioniert! Danke

Antworten