5

Ich schreibe eine Android-App, wo ich eine Menge Variablen habe, auf die ich in einer bestimmten Aktivität zugreifen muss (im Grunde ein "Datenmodell" für ein kleines Spiel). Momentan speichere ich sie alle in einer riesigen "Container" -Klasse, so dass ich mich leicht darauf beziehen kann, ohne meine Aktivitätsklasse zu belasten. Beispiel:Gibt es etwas Ähnliches wie Androids Ressourcensystem in kleinerem Maßstab?

public class Model 
{ 
    private int a; 
    private String b; 
    private float c; 

    ... 

    public int getA() 
    { 
     return a; 
    } 

    public void setA(int a) 
    { 
     this.a = a; 
    } 

    public String getB() 
    { 
     return b; 
    } 

    public void setB(String b) 
    { 
     this.b = b; 
    } 

    public float getC() 
    { 
     return c; 
    } 

    public void setC(float c) 
    { 
     this.c = c; 
    } 

    ... 
} 

Wie Sie sehen können, sind sie von verschiedenen Typen, und alle haben Getter und Setter. Aber es wird mühsam, sie so zu lagern. Ich möchte auch über Gruppen der Variablen iterieren, aber mit diesem flachen Getter/Setter-Format kann ich das nicht wirklich machen.

Ich kenne Android Resource System, aber es scheint nicht geeignet dafür, weil die Variablen nicht App-weit/global sein sollen. Sie existieren nur für das Leben dieser bestimmten Aktivität und werden bei jedem Start der Aktivität programmgesteuert generiert.

Ich dachte daran, sie alle in eine Map<String, Object> Struktur zu setzen, wo ich jede Variable über einen String-Schlüssel referenzieren könnte. Dies würde die Notwendigkeit beseitigen, eine Container-Klasse mit vielen Gettern und Setter zu haben, da ich einfach put oder get auf der Karte aufrufen könnte. Aber dann, wenn ich einen Wert von der Karte erhalten möchte, müsste ich auf den erwarteten Typ umwandeln. Ich mag den Klang davon nicht.

Wer hat eine bessere Lösung? Gibt es etwas Ähnliches wie das Ressourcensystem von Android, das auf kleinerer, temporärerer Ebene verwendet werden kann?

+0

Wenn Sie die Klasse machen und Variablen statisch Sie die Variablen überall zugreifen können. Nicht sicher, ob du das meinst. – Tooroop

Antwort

0

Ich bin nicht sicher, warum, wenn diese den Zustand der Aktivität modellieren sollen, Sie nicht nur tatsächliche Klassen für jedes Modellobjekt definiert haben. Das wäre mein Vorschlag. Sie nehmen hier einen sehr C-ähnlichen prozeduralen Ansatz, indem Sie sie einfach in einer einzigen Klasse zusammen ablegen. Da Ihr Code keine statischen Getter und Setter anzeigt, müssen Sie die Container-Klasse irgendwie erstellen und darauf zugreifen, nein? Basierend auf diesem kleinen Ausschnitt und ohne mehr Kontext ist es schwierig, Ihnen eine bessere Antwort zu geben.

+0

Klassen für jedes Modellobjekt definieren? Ich bin mir nicht sicher, was du damit meinst ... –

0

Sie könnten für jede Aktivität eine benutzerdefinierte XML-Ressourcendatei definieren. Diese Dateien werden im Ordner/xml auf derselben Ebene wie der Ordner/src gespeichert. Verwenden Sie die Resources-Klasse, um sie zu laden.

Oder einen Blick auf dieses Thema nehmen: Dynamic Resource Loading Android

Verwandte Themen