"imageView" zeigt Bild aus Bilder-"Array". BRAUCHE "Array Id" vom Bild, was gerade im "imageView" gezeigt wird.

  • Antworten:7
D.S.
  • Forum-Beiträge: 12

27.03.2014, 21:59:45 via Website

Hey Leute, pure Anfängerfrage.

Beschäftige mich seit neuestem wieder mit Android Programmierung, in Kinderschuhen.
Ich bräuchte dringend mal einen Denkanstoß, komme nicht weiter. :-)

Problem/Frage:

Habe ein Array angelegt mit Bildern aus dem Drawable Ordner.
Es wird je nach Bedarf ein bestimmtes Bild aus diesem Array ins imageView geladen.

Ich möchte, nachdem das Bild ins imageView geladen worden ist, wissen welche ID dieses geladene Bild hat. Also die ID aus dem Array. Laut Code Beispiel weiter unten müsste dann bei id_des_bildes der Wert 2 ausgegeben werden. Wie mache ich das?


1int id_des_bildes; // die ID aus dem Array, welches gerade im imageView geladen ist
2
3int[] bilder_array = { R.drawable.bild_01, R.drawable.bild_02, R.drawable.bild_03, R.drawable.bild_04 };
4
5imageView.setImageResource(bilder_array[2]) // bild_03 wird geladen
6
7id_des_ bildes = ( was kommt hier hin ? )


Was kommt dort hin?

id_des_bildes = imageView.getid() ... da kommt nur die Id, welches das Bild im Drawable-Ordner an sich hat. Ich brauche aber die ID abhängig im bilder_array.
Habe auch viele andere Dinge versucht. Mir fehlt ein kurzer Denkanstoß.

Nehme ich ein Abfrage die mit dem "imageView" startet oder frage ich über das "bilder_array" ab?


Ich danke euch wirklich. Habe gestern ehrlich Stunden gesucht.


P.S. Anbei hätte ich noch eine Frage, wie ich ein Array mit ID 1 starten kann und nicht schon mit ID 0.

— geändert am 27.03.2014, 22:41:35

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

28.03.2014, 07:05:25 via App

Ein Array fängt immer mit dem 0. element da kann man nix ändern
Zu deinem Problem:
Wenn du die id in die view lädst dan kannst du doch die gleiche in die int var schreiben oder nicht?

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

Antworten
AndreasP
  • Forum-Beiträge: 13

28.03.2014, 08:40:32 via Website

weiß nicht, ob ich die Frage richtig verstanden habe, aber mir scheint du willst den Index haben,
also: an welcher Position im Array steht bild_2 ??

Das ist mit normalen Arrays nicht so einfach. Da müsstest du dir selbst eine Schleife bauen und alle
Fälle abfragen.
Besser wäre hier eine ArrayList zu nutzen:

1ArrayList<string> arrlist = new ArrayList<string>(Größe);
2 arrlist.add("Hallo Welt");
3
4int index = arrlist.IndexOf("Hallo Welt");

Antworten
impjor
  • Forum-Beiträge: 1.793

28.03.2014, 14:36:24 via Website

D.S.
Ich möchte, nachdem das Bild ins imageView geladen worden ist, wissen welche ID dieses geladene Bild hat. Also die ID aus dem Array.
Das wird nicht möglich sein, da die ImageView das gar nciht abspeichert, sondern das Bild einließt und dieses im RAM ablegt.
Du könntest entweder eine int-Variable benutzen, also
imageView.setImageResource(bilder_array[2]);
meineTolleIntVar = 2;
oder du fügst derView einen Tag hinzu.


P.S. Anbei hätte ich noch eine Frage, wie ich ein Array mit ID 1 starten kann und nicht schon mit ID 0.
Gar nicht.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
D.S.
  • Forum-Beiträge: 12

29.03.2014, 18:52:39 via Website

Hi Community,

erstmal herzlichen Dank für die verschiedenen Vorschläge und Hilfen. Danke dafür.

Ich habe ein Imageview und darüber zwei Buttons ( vor und zurück ), mit denen ich jeweils das nächste Bild oder das zuvor sehen kann. Das alles habe ich mit einer "counter variable" gemacht. Sie zählt wie oft ich jeweils die Button drücke und gibt somit immer das jeweils richtig Bild aus.

Es klappt blendet, aber es gibt zwei Fälle, da stimmt die Bildreihenfolge nicht mehr und dafür wollte ich noch eine "if-" Anweisung in den OnClickListener reinschreiben schreiben. Dafür bräuchte ich dann gerade den Index des geladenen Bildes im Imageview.

Meine [b]Array_Id[ des Bildes/b] im ImageView, stimmt immer mit dem Wert der Counter-Variable überein. Außer in den zwei Fällen. Deshalb bräuchte ich die aktuelle geladene ID des Bildes.

Naja egal, aber dank euch weiß ich ja jetzt, dass es so einfach nicht klappt.
Ich werde versuchen eine andere Lösung zu finden.

Vielen Dank noch einmal.

Antworten
impjor
  • Forum-Beiträge: 1.793

29.03.2014, 20:17:17 via App

In welchen zwei Fällen klappt es denn nicht? Wahrscheinlich wenn counter von 0 auf -1 geht, oder von Anzahl-der-Bilder-minus-1 auf Anzahl-der-Bilder?
Die if-Abfrgae müsste dann aber auch über die counter-Variabel funktionieren.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
D.S.
  • Forum-Beiträge: 12

31.03.2014, 08:36:52 via Website

Ja genau, lag unter anderem an diesen Zahlen.
Ich habe es nochmal von vorne und übersichtlicher programmiert (also die Methode für die Buttons).
Die Counter habe ich auf 1 gesetzt, macht zwar nicht viel Unterschied aber hat ein logisches Problem gelöst (vor allem in meinem Kopf) :-).

Eine weitere Frage noch :
Kann ich mehrdimensionale arrays wie eine Datenbank bzw einfaches excel Tableau betrachten, also eine Tabelle mit Zeilen und Spalten? Das würde mir glaube ich viel ersparen.

Vielen Dank im Voraus

— geändert am 31.03.2014, 08:37:18

Antworten
impjor
  • Forum-Beiträge: 1.793

31.03.2014, 14:57:25 via App

Ja kannst du.
Mit der besonderheit, dass die Spalten oder die Zeilen unterschiedliche Längen haben können.
Also Spalte 0 hat 10 Zeilen, Spalte 1 hat 100, Spalte 3 keine. (als Beispiel)

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten