daten an listener übergeben

  • Antworten:3
  • Bentwortet
floatec
  • Forum-Beiträge: 360

22.12.2010, 17:11:26 via Website

ich stehe grad vor folgenden Problem.

ich hab eine Function die ein Tablelayout dynamisch mit tabelrows füllt in dennen wieder rum textviews sind. jetzt wollte ich diesen textviews einen onlongclick listener verpassen in denn ein intent aufgerufen werden soll....diesen intent sollen aber immer je nach textview ein anderer wert übergeben werden.

jetzt ist nur die frage wie ich dieser listener klasse einen wer übergeben kann.


wäre über einen lösungsansatz sehr dankbar.

gruß
paddy

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

22.12.2010, 18:11:59 via Website

Da gibt es verschiedene Möglichkeiten.

Du könntest zum Beispiel jedem dieser TextViews mit setTag() ein Objekt verpassen. Im globalen Listener (Du hast doch nur einen für alle TextViews, oder?) kannst Du dieses Objekt dann mit getTag() wieder rausholen und entsprechend die Intents steuern.

Gruß
Harald

Antworten
floatec
  • Forum-Beiträge: 360

22.12.2010, 18:32:50 via Website

Admin Service Limited
Da gibt es verschiedene Möglichkeiten.

Du könntest zum Beispiel jedem dieser TextViews mit setTag() ein Objekt verpassen. Im globalen Listener (Du hast doch nur einen für alle TextViews, oder?) kannst Du dieses Objekt dann mit getTag() wieder rausholen und entsprechend die Intents steuern.

Gruß
Harald

danke

das dürfte der einfachste weg sein.

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

23.12.2010, 11:20:50 via Website

Nachtrag: Ich stolpere gerade in unserem Code über eine Stelle die in etwa Deiner Anforderung entspricht. Hier geht es allerdings um einen TextWatcher. Den zuerst von mir genannten Vorschlag würde ich austauschen gegen eine InnerClass - ist dann doch geschickter:

1private class MyTextWatcher implements TextWatcher {
2 private long l;
3
4 public MyTextWatcher(final long l) {
5 // Irgendeine Kennung für diese Instanz
6 this.l = l;
7 }
8
9 public void afterTextChanged(Editable editable) {
10 // Hier dann interpretieren von l
11 switch (l) {
12 //
13 }
14 }
15
16 public void beforeTextChanged (CharSequence charSequence, int start, int count, int after) {}
17
18 public void onTextChanged (CharSequence charSequence, int start, int before, int count) {}
19}

Genutzt wird das Ganze dann mit dem Code:

1editText1.addTextChangedListener(new MyTextWatcher(1));
2editText2.addTextChangedListener(new MyTextWatcher(2));
3...

Du mußt das jetzt nur an Deinen longClick und Deine TextViews anpassen.

Gruß
Harald

Antworten