Objekte aus ArrayList in StringArray konvertieren?!

ghyme

Mitglied
Hallo zusammen,

ich habe wieder mal ne Frage zu der guten alten ArrayList, werd irgendwie nicht warm damit :autsch:

Ich benutze einen XML-Parser und erhalte daraus eine ArrayList vom Typ Datapoint, der so aufgebaut ist:

Java:
public class Datapoint {

  private String stateBased;
  private String name;
  private String priority;
  private String mainNumber;
  private String groupadress;
  private String dptID;


  public Datapoint() {
  }

  public String getMainNumber() {
    return mainNumber;
  }

  public void setMainNumber(String mainNumber) {
    this.mainNumber = mainNumber;
  }

  public String getName() {
  .
  .
  .

Das heißt ein Datapoint Objekt in der ArrayList, sieht folgendermaßen aus:
Java:
name: a
stateBased: b
mainNumber: c
dptID: d
groupadress: e
priority: f

Ich kann die einzelnen Objekte mit den dazugehörigen Strings mit folgendem Code ohne Probleme darstellen:
Java:
for(int i=0;i<itemsList.size();i++)
{
    item = itemsList.get(i);
    parsedData = parsedData + "----->\n";
    String name = parsedData + "Name: " + item.getName() + "\n";
    String stateBased = parsedData + "stateBased: " + item.getStateBased() + "\n";
    String mainNumber = parsedData + "mainNumber: " + item.getMainNumber() + "\n";
    String dptID = parsedData + "dptID: "+ item.getDptID() + "\n";
    String groupadress = parsedData + "Groupadress: "+ item.getGroupadress() + "\n";
    String priority = parsedData + "priority: "+ item.getPriority() + "\n";
}

Ich weiß nur nicht, wie ich nur an die einzelnen Datapoint Objekte drankomme...

Ich hätte daran gedacht für jedes Objekt ein String Array mit den name, dptID, usw. Strings zu erstellen.

Die Anzahl der Objekte in der ArrayList ist nicht fix und kann je nach Inhalt des ausgewerteten XML Files variieren.

Könnt Ihr mir bitte helfen, bin blutiger Anfänger...

Danke!
 
Zuletzt bearbeitet:
der Thementitel 'Objekte aus ArrayList rausholen' scheint nicht das Problem zu sein,
du kannst die Objekte in einer Schleife herausholen und ausgeben, jede andere Verwendung geht genauso,

konzentriert sich deine Frage allein auf zwei ominöse Sätze am Ende?
> Ich hätte daran gedacht für jedes Objekt ein String Array mit den name, dptID, usw. Strings zu erstellen.
> Ich muss die Objekte mit den beinhalteten Strings einzeln in ner anderen Activity (Android Programmierung) auswerten.

bisschen mehr wäre günstig,
und mit dem Thementitel in diesem Bereich werden Experten zu "Activity (Android Programmierung)" ganz bestimmt nicht gezielt vorbeischauen..
 
konzentriert sich deine Frage allein auf zwei ominöse Sätze am Ende?
> Ich hätte daran gedacht für jedes Objekt ein String Array mit den name, dptID, usw. Strings zu erstellen.
> Ich muss die Objekte mit den beinhalteten Strings einzeln in ner anderen Activity (Android Programmierung) auswerten.

Die Frage konzentriert sich auf das Loslösen der Objekte mit den dazugehörigen Strings aus der ArrayList. Hab da keine Idee wie ich das machen kann und hätte mir ein paar Tipps dazu erhofft ;(

und mit dem Thementitel in diesem Bereich werden Experten zu "Activity (Android Programmierung)" ganz bestimmt nicht gezielt vorbeischauen..

Das es sich dabei um ne Android App handelt ist nebensächlich, den Transfer in die andere Activity krieg ich dann hin.
 
was genau ist das Ziel, was bedeutet 'loslösen' usw.?
Beispiel vorher/ nachher wäre günstig

in der Schleife mit dem item kannst du ein Array beliebiger Größe erstellen,
manche Zellen davon mit Werten aus dem Item befüllen,
dieses Array in eine neue Liste einfügen oder was immer sich anbietet, Methodenaufruf zum Übertragen

das ist so klar, dass ich bezweifle, angesichts deiner schon komplexen Schleife etwas neues zu erzählen,
aber ansonsten ist keine Frage erkenn- und verstehbar, meiner Ansicht nach
 
was genau ist das Ziel, was bedeutet 'loslösen' usw.?
Beispiel vorher/ nachher wäre günstig

Wenn ich nun die Schleife durchlaufe, sieht es so aus:
Java:
----------->
name: a
stateBased: b
mainNumber: c
dptID: d
groupadress: e
priority: f
----------->
name: g
stateBased: h
mainNumber: i
dptID: j
groupadress: k
priority: l
.
.
.

Ich hätte gerne nur ein Objekt davon, also z.B. nur das erste:
Java:
----------->
name: a
stateBased: b
mainNumber: c
dptID: d
groupadress: e
priority: f

und möchte auf die einzelnen Strings darin zugreifen können.

in der Schleife mit dem item kannst du ein Array beliebiger Größe erstellen,
manche Zellen davon mit Werten aus dem Item befüllen, das ist so klar, dass ich bezweifle, angesichts deiner schon komplexen Schleife etwas neues zu erzählen

Ich glaube auch, dass ich einfach nur auf der Leitung stehe... aber wenn man mal draufsteht, kommt man so schnell nicht davon runter 😳

Kannst du mir vllt kurz die For-Schleife so abändern, wie du es meinst?
 
> Kannst du mir vllt kurz die For-Schleife so abändern, wie du es meinst?
ich habe ja nicht wirklich eine Meinung
Java:
for(int i=0;i<itemsList.size();i++)
{
    item = itemsList.get(i);
    String[] data = ..;
    // do something with data usw.
}
habe ich beschrieben, nichts besonderes

-------

dein neues Posting enthält den wichtigen Satz
> Ich hätte gerne nur ein Objekt davon, also z.B. nur das erste:
welcher die Lage verändert

'einzelnen Datapoint Objekte' + 'für jedes Objekt' klangen vorher noch vollkommen nach Schleife

ein einzelnes Objekt bekommst du z.B. mit
Java:
Datapoint first = itemsList.get(0);
die get-Methode sollte ja aus der Schleife bekannt sein..,
vorher nachschauen ob mindestens ein Objekt drin bietet sich unbedingt an,
remove gäbe es auch noch und manch anderes, in der API nachschauen
 
Danke erstmal für deine Hilfe. Ich denke mein Problem liegt darin, dass ich für jeden einzelnen Schleifendurchlauf ein neues String Array erstellen muss. Es wär super, wenn ich am Ende folgende String Arrays hätte:

Java:
String [] Objekt 1 = {name = a, stateBased = b, dptID =c, ..}
String [] Objekt 2 = {name = d, stateBased = e, dptID =f, ..}
String [] Objekt 3 = {name = g, stateBased = h, dptID =i, ..}
usw.

Aber wie mach ich das programmiertechnisch, ich muss ja dann die Iterationszahl irgendwie in das zu erstellende String Array reinbringen:

Java:
for(int i=0;i<itemsList.size();i++)
{
    item = itemsList.get(i);
    String [] [i] = new String [itemsList.size()];
    // danach dann die einzelnen Strings ins Array schreiben
}

Wie kann ich das realisieren?
 
evtl. bin komplett auf dem falschen Dampfer, aber einen Versuch ist es Wert:

Java:
ArrayList<Datapoint> datapoints = new ArrayList<Datapoint>();
for(int i=0;i<itemsList.size();i++)
{ item = itemsList.get(i);
Datapoint  dp = new Datapoint();
dp.setName(item.getName());
dp.setStateBased( item.getStateBased());
//usw
datapoints.add(dp);

}
 
jetzt bist du also bei einem String[][], von einem Thema zum nächsten, unmöglich vorher zu raten..

das zweidimensional String[][] muss vor der Schleife erstellt werden,
mit new String[anzahlItems][anzahlElementeProItem]

füllen mit
array[0]=name;
array[1]=stateBased;
usw.

@jgh
enthält nicht itemList bereits Datapoint-Elemente? 😉
aber das kann ich natürlich auch bisher falsch sehen
 
evtl. bin komplett auf dem falschen Dampfer, aber einen Versuch ist es Wert:

Java:
ArrayList<Datapoint> datapoints = new ArrayList<Datapoint>();
for(int i=0;i<itemsList.size();i++)
{ item = itemsList.get(i);
Datapoint  dp = new Datapoint();
dp.setName(item.getName());
dp.setStateBased( item.getStateBased());
//usw
datapoints.add(dp);

}

Soweit ich das jetzt verstehe, füllst du die ArrayList datapoints durch die For-Schleife mit den Strings?! Das wird in meinem Programm bereits durch den Befehl

Java:
ArrayList <Datapoint> itemsList = parseXML();

bereits erledigt, dadurch wird die ArrayList mit den Werten aus der XML-Datei befüllt.
 
jetzt bist du also bei einem String[][], von einem Thema zum nächsten, unmöglich vorher zu raten..

das zweidimensional String[][] muss vor der Schleife erstellt werden,
mit new String[anzahlItems][anzahlElementeProItem]

füllen mit
array[0]=name;
array[1]=stateBased;
usw.


Ja ich weiß, tu mich leider schwierig die genauen Worte für das zu finden, was ich brauch...

Ich hab das nun mal so übernommen, erhalte aber eine NullPointerException, weiß aber nicht warum:

Java:
public class Create_Project{
private static final String[][] String = null;

public static void main (String[] args) {
save_project();
}

private void save_project() {
ArrayList <Datapoint> itemsList = parseXML();
String[itemsList.size()][4] = new String();
        	
for(int i=0;i<itemsList.size();i++)
{
     item = itemsList.get(i);      
     String [i] [0] = item.getName();
     String [i] [1] = item.getStateBased();
     String [i] [2] = item.getMainNumber();
     String [i] [3] = item.getGroupadress();
     String [i] [4] = item.getPriority();
}
}
 
Habs schon selber gefunden, blöder Leichtsinnsfehler, muss so heißen:


Java:
String = new String [itemsList.size()][5];

Und damit funktioniert es jetzt auch so wie ich es wollte!!!! :toll::toll::toll:

RIESENDANK AN SlaterB für deine Geduld und deine Hilfe!!!:applaus::applaus::applaus:
 
dir ist nicht bekannt wie man eine Variable deklariert, speziell ein Array und es verwendet?
nichtmal die grundlegende Tatsache von Variablennamen? mit item usw. passt es doch,
wie kannst du
> String [0] = item.getName();
schreiben, soll 'String' der Name der Variablen des Arrays sein? ein solcher Name wäre verboten
(edit: ok, stimmt ja gar nicht, dein Code zeigt es, aber verrückt ist das schon)

lerne bitte aus einem Lehrbuch, was ein Array ist, wie man eins deklariert, wie man zugreift usw.,
erstmal eindimensional, das ist schwer genug!
Galileo Computing :: Java ist auch eine Insel - 3 Klassen und Objekte
3.8 Arrays

ich persönlich möchte in solchen Fällen bewußt nicht noch mehr Code vorgeben,
Arrays ist nun eines der Grundlagenthemen schlechthin, die man an zwei Händen aufzählen kann,
das muss bekannt sein, und das ist nun was zum selber lernen

(edit: wenn zufrieden, dann bin ich es auch)
 

Neue Themen


Zurück
Oben