1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Vector 2 ListView

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von jmediaNet, 19.09.2011.

  1. jmediaNet, 19.09.2011 #1
    jmediaNet

    jmediaNet Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    19.09.2011
    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
     
  2. sixi, 19.09.2011 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    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).
     
    jmediaNet bedankt sich.
  3. jmediaNet, 19.09.2011 #3
    jmediaNet

    jmediaNet Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    19.09.2011
    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
     

Diese Seite empfehlen