| |||||||
Das Thema "Simple Framework - Verschiedene Elemente mit gleicher Oberklasseeinlesen" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer Benutzer Registriert seit: 12.06.2011
Beiträge: 14
Abgegebene Danke: 2
Erhielt 2 Danke für 2 Beiträge
| 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> Name Code: @Root(strict=false)
public abstract class Name {
public abstract String getValue();
} Code: public class MyName extends Name{
@Text
protected String value;
public MyName(String value) {
super();
this.value = value;
}
public String getValue() {
return value;
}
} Code: @Element
public class MyAddress extends Name{
@Text
protected String value;
public MyAddress(String value) {
super();
this.value = value;
}
public String getValue() {
return value;
}
} Code: @Root
public class MyTown {
@ElementList(inline=true,entry="name")
protected List<Name> names;
} 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;
}} 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 |
| | |
| | #2 (permalink) |
| Android-Hilfe.de Mitglied |
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) |
| | |
| | #3 (permalink) |
| Neuer Benutzer Registriert seit: 12.06.2011
Beiträge: 14
Abgegebene Danke: 2
Erhielt 2 Danke für 2 Beiträge
|
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. |
| | |
| | #4 (permalink) | |
| Neuer Benutzer Registriert seit: 12.06.2011
Beiträge: 14
Abgegebene Danke: 2
Erhielt 2 Danke für 2 Beiträge
| Zitat:
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. | |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| 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 |