Vector 2 ListView

J

jmediaNet

Neues Mitglied
0
Hallo,

EIns vorweg ich beschäftige mich erst seit einigen Wochen mit Android. Bisher kam ich aus der Sparte C/C# daher habe ich hier bezüglich einiger Syntaxkonventionen ein etwas größeres Problem...

Ist-Situation:
Ich erhalte von einem ASP.NET Webservice ein DataSet, welches mir an ein SoapObject übergeben wird... in diesem DataSet können 1 - x Datensätze vorhanden sein...
Code:
SoapObject result = (SoapObject)envelope.getResponse();
            SoapObject resultTable;
            
            if(result.getPropertyCount() > 0)
            {
                resultTable = (SoapObject) result.getProperty(1);
                SoapObject Tabelrow = (SoapObject) resultTable.getProperty(0);
                TaxiListe = new Vector();
                for(int i = 0; i < Tabelrow.getPropertyCount(); i++)
                {
                    Bundle mTaxi = new Bundle();
                    SoapObject TaxiList = (SoapObject) Tabelrow.getProperty(i);
                    mTaxi.putString("FPID", TaxiList.getProperty("FPID").toString());
                    mTaxi.putString("TaxNr", TaxiList.getProperty("TaxNr").toString());
                    mTaxi.putString("FAID", TaxiList.getProperty("FAID").toString());
                    mTaxi.putString("FZKID", TaxiList.getProperty("FZKID").toString());
                    mTaxi.putString("KFZKennz", TaxiList.getProperty("KFZKennZ").toString());
                    mTaxi.putString("Sitze", TaxiList.getProperty("Sitze").toString());
                    mTaxi.putString("KmStart", TaxiList.getProperty("KmStart").toString());
                    mTaxi.putString("Baujahr", TaxiList.getProperty("Baujahr").toString());
                    
                    TaxiListe.add(mTaxi);
                }
            }
Mir liegt dann soweit ganz gut und schön ein Vector vor, der die Datensätze in Form von Bundles enthält.

Mein Frage nun hat evtl. jemand eine Idee wie ich nun diese(s)n Vector an ein ListView binden kann? In C/C# wüsste ich wie ich rangehen muss, nur unter Android tuh ich mich da noch etwas schwer.

Für Eure Hilfen bin ich sehr dankbar..

Jens
 
Alsoooo.... :)

Als erstes würde ich an deiner Stelle ein Entity-Objekt verwenden, statt die einzelnen Ergebnisse in ein "Bundle" zu schmeißen: Also erstellst du dir eine neue Klasse "Taxi", fügst die ganzen Attribute hinzu (FPID, TaxNummer, etc...) und generierst dir dazu getter und setter (Eclipse: Rechtsklick in die Klasse -> Refactor > Generate Getter and Setter ...).
Entsprechend solltest du deinen Vector "parametrisieren": TaxiListe = new Vector<Taxi>(); - wobei eigentlich ein Vector unfug ist :) Nimmste sinnvoller eine ArrayList (List<Taxi> TaxiListe = new ArrayList<Taxi>();).

Eine Anleitung zu einem ListView findest du z.B. hier. (Aus der Liste machst du per .toArray()-Methode ein Array).
 
  • Danke
Reaktionen: jmediaNet
Hallo sixi,

Danke erstmal für deine schnelle Hilfe, sie hat mir zur Lösung verholfen.... Habe es nun so geregelt....

Neue Klasse CTaxiListe
Code:
package de.soap.dataset.test;

public class CTaxiListe {
    private String mFPID;
    private String mTaxNr;
    private String mFZKID;
    private String mKFZKennz;
    private String mSitze;
    private String mKmStart;
    private String mBaujahr;
    public String getmFPID() {
        return mFPID;
    }
    public void setmFPID(String mFPID) {
        this.mFPID = mFPID;
    }
    public String getmTaxNr() {
        return mTaxNr;
    }
    public void setmTaxNr(String mTaxNr) {
        this.mTaxNr = mTaxNr;
    }
    public String getmFZKID() {
        return mFZKID;
    }
    public void setmFZKID(String mFZKID) {
        this.mFZKID = mFZKID;
    }
    public String getmKFZKennz() {
        return mKFZKennz;
    }
    public void setmKFZKennz(String mKFZKennz) {
        this.mKFZKennz = mKFZKennz;
    }
    public String getmSitze() {
        return mSitze;
    }
    public void setmSitze(String mSitze) {
        this.mSitze = mSitze;
    }
    public String getmKmStart() {
        return mKmStart;
    }
    public void setmKmStart(String mKmStart) {
        this.mKmStart = mKmStart;
    }
    public String getmBaujahr() {
        return mBaujahr;
    }
    public void setmBaujahr(String mBaujahr) {
        this.mBaujahr = mBaujahr;
    }
    
    /**
     * dies wird in der ListView angezeigt....
     */
    @Override
    public String toString()
    {
        return "Taxi " + this.mTaxNr;
    }
    
}
In der entsprechenden Activity habe ich es nun per ArrayAdapter den Inhalt an das ListView übergeben...
Code:
    private void zeigeTaxiListe()
    {
        CTaxiListe[] cList = (CTaxiListe[]) mTaxiListe.toArray(new CTaxiListe[mTaxiListe.size()]);
        final ArrayAdapter<CTaxiListe> dSaetze = new ArrayAdapter<CTaxiListe>(this, android.R.layout.simple_expandable_list_item_1,cList);
        setListAdapter(dSaetze);
    }
Ich vermute mal, das der ArrayAdapter immer die Property .toString() anzeigt, jedenfalls musste ich dieses Property in der Klasse einfügen, da ich sonst in der ListView nur Kauderwelch stehen hatte...

Vielen Dank nochmal für deine Hilfe ;)

Jens
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.021
swa00
swa00
D
Antworten
9
Aufrufe
1.765
jogimuc
J
J
  • JoEntwickler
Antworten
0
Aufrufe
974
JoEntwickler
J
Zurück
Oben Unten