Bild bei Klick ändern

N

nlfell

Ambitioniertes Mitglied
0
Hallo, ich habe ein Bild in meiner App eingebaut und ich will, das man beim Draufdrücken das nächste Bild sieht, es sind insgesamt 14 Stück, die immer in der selben Reihenfolge angezeigt werden sollen und am Ende soll es wieder von vorne anfangen.
 
% (modulo Operator) ist das was du suchst.
 
  • Danke
Reaktionen: nlfell
Kannst du mir ein Beispielcode senden?
 
int i = 0;

... onClickListener ....

i ++;
i = i%14;

i hat werte von 0 bis 13
 
Also muss ich nur int i = .. verändern und den onClickListener einstellen?
 
der code zählt dir bei jedem klick eins weiter und bleibt immer von 0-13 stehen... das verwendest als index z.b. in eine arrayliste - in der liste hast du z.b. resourcen auf deine bilder oder urls oder namen gespeichert

im klick setzt die dann auf den imageview
 
Damit ich das nicht falsch verstehe, kannst du mir vielleicht ein Code mit Test1 bis Test13 kurz aufstellen?:D
 
Code:
int bilder[] = new int[14];

bilder[0] = R.drawable.bild_0;
...
bilder[13] = R.drawable.bild_13;

int i=-1; // -1 damit wir bei "0" anfangen

onClickListener() ... {
i++;
i%=14;

img.setImageResource(bilder[i]);

}
 
Zuletzt bearbeitet von einem Moderator:
Ich habs jz so gemacht:

imageView1 = (ImageView)findViewById(R.id.imageView1);

int bilder[] = new int[12];

bilder[0] = R.drawable.bild1;
bilder[12] = R.drawable.bild13;

int i=-1; // -1 damit wir bei "0" anfangen

imageView1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
i++;
i%=12;

imageView1.setImageResource(bilder);

};

Und diese Fehler kommen:
i++; "Cannot refer to the non-final local variable i defined in an enclosing scope"
i%12; "Cannot refer to the non-final local variable i defined in an enclosing scope"
imageView1.setImageResource(bilder); "Cannot refer to the non-final local variable i defined in an enclosing scope"
 
Da fehlen aber noch Java Grundlagen :D

Du definierst mit deinem OnClickListener eine "anonyme Klasse", die sieht lokale Methodenvariablen der erzeugenden Methode nicht(*). (Stichwort scoping regeln)

Du musst das i als Instanzvariable in der Klasse definieren.

(*) jaja es gibt eine Ausnahme, das sind final Variablen, aber das wird dir hier nicht helfen :D
 
Okay danke :) Also in die Klammer i schreiben?
 
In der Klasse ausserhalb der Methode.

(zum Deinem editierten Kommentar: Häh? Da sind überall Klammern.)
 
Also wie genau und wohin?
 
Vor die Methode, die du teilweise gepostet hast. Du hast keine Ahnung von Java, hm?

Die letzte derartige Diskussion hatte ich mit diesem netten Kerl:

b7e.jpg
 
Alter, hau einfach "private int i =-1;" gleich nach der ersten öffnenden geschweiften Klammer (noch einfacher kann mans nicht erklären) der Klasse rein, also noch vor der onCreate oder onClick Methode oder was auch immer. :blink:

53840819.jpg


Da fehlen wohl die grundlegendsten Grundlagen. ;) - aber wir helfen ja gerne.
 
Zuletzt bearbeitet:
Ja tut mir leid, könnt ihr mir eine Website oder etwas Anderes nennen, wo man Java lernen kann?
 
Code:
public class ... extends ActionBarActivity {

	private int i = 0;
	ImageView bild;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_...);
		bild = (ImageView)findViewById(R.id.imageView1);
		
		final int bilder[] = new int[12];

		bilder[0] = R.drawable....1;
                ....
		bilder[12] = R.drawable....13;

		bild.setOnClickListener(new OnClickListener () {
	    	
	    	public void onClick(View v) {
			i++;
			i%=12;

			bild.setImageResource(bilder[i]);

		};

			
		});
		};


}
Wenn ich jetzt auf die Seite gehen will, stürzt meine App ab.. Woran liegt das?
 
Zuletzt bearbeitet von einem Moderator:
Ein int[12] geht von 0 bis .... ? na? :D
 
Oh sorry ich hab nur auf die Zahlen geachtet *facepalm* Vielen Dank ;)
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.048
jogimuc
J
C
Antworten
8
Aufrufe
1.122
swa00
swa00
D
Antworten
17
Aufrufe
391
datNeMo
D
Zurück
Oben Unten