Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen

Das Thema "Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 23.08.2011, 13:46   #1 (permalink)
Neuer Benutzer

Registriert seit: 12.06.2011
Beiträge: 14
Abgegebene Danke: 2
Erhielt 2 Danke für 2 Beiträge
Frage Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen

Hallo alle miteinander,

ich habe eine XML-Datei in der eine Liste von Elementen, die von der gleichen Klasse in Java erben - hier Name
XML-Datei
Code:
<myTown>
    <name type="myname">Peter</name>
    <name type="myname">Paul</name>
    <name type="myadress">The White House</name>
    <name type="myname">Daisy</name>
</myTown>
in Java möchte ich das ganze wie folgt abbilden:
Name
Code:
@Root(strict=false)
public abstract class Name {    
    public abstract  String getValue();
}
MyName
Code:
public class MyName extends Name{
    @Text
    protected String value;

    public MyName(String value) {
        super();
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}
MyAddress
Code:
@Element
public class MyAddress extends Name{
    @Text
    protected String value;
  
    public MyAddress(String value) {
        super();
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}
MyTown - Oberelement
Code:
@Root
public class MyTown {    
    @ElementList(inline=true,entry="name")
    protected List<Name> names;
}
Da das Framework nicht in der Lage ist, Unterklassen von Namen zu finden, habe ich mir überlegt, dass ich hierfür einen eigenen Konverter erstelle, der über das Attribut Type die entsprechenden Klassen erzeugt
Code:
public class MyConverter implements Converter<Name>{

    @Override
    public Name read(InputNode node) throws Exception {
        InputNode typeNode = node.getAttribute("type");
        String type = typeNode.getValue();
        String name = node.getValue();
        
        if(type.equals("myname")){
            return new MyName(name);
        } else if(type.equals("myaddress")){
            return new MyAddress(name);
        }
        return null;
    }}
Insgesamt funktioniert das jedoch nicht. Wenn ich das so einlese wird der Fehler geworfen, dass von Name keine Instanz erzeugt werden kann.
Daher meine Frage: Ist an dem Code etwas falsch? Muss das @Convert vielleicht an eine andere Stelle?

Hinweis: Dies ist nur ein Minimal-Beispiel meines Problems. Die XML Datei empfange ich bei meinem Programm von einem Server.
Als Konsequenz kann ich also nicht das Class-Attribut einfach hinzufügen und die Architektur kann insgesamt nicht verändert werden
J4y ist offline   Mit Zitat antworten
Alt 23.08.2011, 14:06   #2 (permalink)
Android-Hilfe.de Mitglied

Modell: Motorola Atrix 4G

Registriert seit: 07.12.2010
Beiträge: 170
Abgegebene Danke: 14
Erhielt 32 Danke für 31 Beiträge
Neeldarax eine Nachricht über ICQ schicken
Standard AW: Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen

Hi J4y,

...

regards

EDIT: Hab ma den Unsinn gelöscht. Nach dem Testen hab ich verschiedene Ergebnisse bekommen. Jetzt weiß ich nicht wo der Fehler liegt XD

Aber ggfs. solltest du nachgucken, wo du von der Klasse Name eine Instanzierung machst. (könnte die Ursache sein)

Geändert von Neeldarax (23.08.2011 um 14:10 Uhr)
Neeldarax ist offline   Mit Zitat antworten
Alt 23.08.2011, 14:13   #3 (permalink)
Neuer Benutzer

Registriert seit: 12.06.2011
Beiträge: 14
Abgegebene Danke: 2
Erhielt 2 Danke für 2 Beiträge
Standard AW: Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen

Hi Neeldarax,

danke für deine Antwort!
An der Sache liegt es aber leider nicht. Auch wenn eine Klasse abstrakt ist kann sie über Konstruktoren verfügen und Unterklassen können durchaus super aufrufen.
Ansonsten wäre es natürlich ein einfacher blöder Fehler gewesen :-D Das wäre mir gerade fast sogar lieber^^

Ich hab mittlerweile in Erfahrung bringen können, dass die Elemente in der richtigen XML (in diesem Beispiel nicht abgebilded) ein Attribut xsi:type haben. Das scheint wohl auch ein Standard zu sein. Mir würde es also auch helfen, wenn ich das explizit bearbeiten könnte.
J4y ist offline   Mit Zitat antworten
Alt 24.08.2011, 09:47   #4 (permalink)
Neuer Benutzer

Registriert seit: 12.06.2011
Beiträge: 14
Abgegebene Danke: 2
Erhielt 2 Danke für 2 Beiträge
Standard AW: Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen

Zitat:
Zitat von Neeldarax Beitrag anzeigen

Aber ggfs. solltest du nachgucken, wo du von der Klasse Name eine Instanzierung machst. (könnte die Ursache sein)
Ich selber erstelle keine Instanz von Name. Das ist das was durch das Framework gemacht wird. Und hier liegt eben das Problem.
In der Klasse MyTown ist eine Liste mit Elementen vom Type Name vorgegeben. Und das Framework ist hier nicht in der Lage die entsprechende Unterklasse von Name zu finden. Das geht ja auch nicht ohne weiteres in Java. Daher suche ich eine Möglichkeit hier dem Framework mitzuteilen welche Klasse es verwenden soll.
Auf der HP der Entwickler steht, dass man in der XML Datei selber ein bestimmtes Attribut angeben kann, das die Klasse spezifizert. Die Strutkur des Dokumentes ist aber fest vorgegeben. Ich brauche also eine Möglichkeit dies zb. über Annotation zu tun.
J4y ist offline   Mit Zitat antworten
Antwort

Stichworte
@convert, binding, simple framework, xml

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
2 Apps/Widgets, gleicher Wetteranbieter, verschiedene Daten?! Montechristo1979 Sonstige Apps & Widgets 6 22.06.2011 09:00
Problem mit ScrollView (Elemente nicht angezeigt) mr.freeze Android App Entwicklung 5 17.06.2011 22:17
verschiedene Töne für verschiedene Ereignisse (Benachrichtigungen) handypfanne Samsung Galaxy (I7500) Forum 6 27.04.2011 20:22
2 verschiedene modded framework-res zusammenführen bossen Root / Hacking / Modding für Samsung Galaxy S 20 13.03.2011 15:52
XML-(De-)Serialisation mit Simple Silbär Android App Entwicklung 7 31.08.2010 12:16




Du liest gerade: "Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.