Android: extend Linearlayout, benötigt aber dasselbe für RelativeLayout. Duplicate-Code unvermeidbar?

8

Ich habe diesen Code:

%Vor%

Jetzt brauche ich auch eine Version für RelativeLayout, also würde ich die Klassendatei duplizieren und "extends LinearLayout" durch "extends RelativeLayout" ersetzen. Ich denke, das wäre schlecht, weil ich keinen doppelten Code möchte.

Wie würde ich mein Ziel erreichen, da Java keine Mehrfachvererbung zulässt?

Ich habe etwas über das Kompositionsdesign gelesen, aber ich bin mir nicht sicher, wie ich das umsetzen soll.

Vielleicht könnte mir jemand einen Anhaltspunkt dafür geben, wie ich dieses Problem am elegantesten lösen kann?

    
cdbeelala89 10.02.2013, 17:48
quelle

3 Antworten

1

Sie müssen beide nicht erweitern, um doppelten Code zu vermeiden. Sie können so etwas tun:

%Vor%     
mommcilo 21.02.2013 22:40
quelle
0

Von dem, was ich gelernt und benutzt habe, gibt es zwei Möglichkeiten:

  1. Sie können das tun, was Sie vermeiden möchten (duplizieren Sie die Klassendatei und ersetzen Sie "extends LinearLayout" durch "extends RelativeLayout")

  2. Sie können zwei Schnittstellen und eine Klasse erstellen: Eine Schnittstelle, die LinearLayout erweitert, eine weitere, um RelativeLayout zu erweitern, und die Klasse, die die Methoden und Variablen der Erweiterungsschnittstellen implementiert.

Ich hoffe, das hilft ein wenig

    
Zuenonentu 11.02.2013 08:56
quelle
0

Sie müssen Ihre Herangehensweise überdenken.

Scheint so, als ob Sie Layout verwenden, um die VIEW-Logik zu steuern. Leider enthält Ihre Frage nicht zu viele Informationen darüber, was Sie erreichen möchten.

Sie haben wenige Möglichkeiten:

  • Implementieren Sie den LAYOUT-Proxy / -Delegaten mit der benutzerdefinierten Logik (Bad Approach IMO)
  • Machen Sie eine dedizierte HANDLER-Klasse zur Steuerung Ihrer VIEW-Objekte ... diese sind unabhängig vom LAYOUT
  • Machen Sie Ihr VIEW-Objekt und verwenden Sie VIEW-Objekt anstelle von LAYOUT (wahrscheinlich der Weg zu gehen)
Pavel Horal 11.02.2013 14:33
quelle