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

Listviews & php-Webservice

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Fant, 21.12.2011.

  1. Fant, 21.12.2011 #1
    Fant

    Fant Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    21.12.2011
    Erstmal Hallo. Ich beschäftige mich schon seit einiger Zeit mit Android, lese mich durch Tutorials, aber irgendwie scheint der Funke nicht überzuspringen!

    Ich möchte eine einfache App entwickeln, mit der ich Daten(Kategorien) von einer PHP-Datei vom Webserver (Json-Endcode) bekomme und in einer Listview anzeige. Dazu soll die Kategorie als Text in der Listview erscheinen.
    beim Klick auf eine Kategorie möchte ich die ID des geklickten Elements an eine weitere Activity übergeben, (putExtra?), dort wieder auslesen und in der neuen Activity Unterkategorien anzeigen (als Listview). Hier kann wieder eine Kategorie gewählt werden. Anhand dieser Auswahl wird dann eine 3te PHP augerufen, die Ergebnisse dieser Kategorie liefert (mit Bildern), wieder als Liste. Zuguterletzt möchte ich nun Beim Klick auf ein Ergebnis-Item die Detailansicht öffnen um mehr Bilder und Detaildaten anzuzeigen.

    Bei der Suche bin ich auf Listview,SimpleCursorAdapter,ArrayAdapter und alles mögliche gestossen, irgendwie kann ich aber nicht herausfinden, wie man so eine App am Besten aufbaut.

    Eigentlich bin ich es gewohnt, z.B. eine Listview zu füllen und einen Key zum Elemnt zu definieren, beim Klick weiß man dann welche ID zum geklickten Elemnt gehört, bei Android scheint das wichtigste der Adpater zu sein, aber irgendwie behirn ich das System nicht ganz.

    Wäre echt super, wenn mir jemand weiterhelfen könnte und mir hier den nötigen Denkanstoss geben könnte...

    Vielen dank schonmal
     
  2. swordi, 21.12.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja bau dir einfach ein paar objekte die du mit daten füllst

    diese objekte schmeißt du dann in einen custom adapter, der die listview füllt.

    dann hast du alles was du brauchst
     
  3. Fant, 21.12.2011 #3
    Fant

    Fant Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    21.12.2011
    Hallo Swordi,

    Danke für deine Antwort. Genau daran scheitert es ja, da ich fürchte ich den Zusammenhang des Konzepts nicht ganz durschaut hab.

    Wenn ich das richtig verstehe dann binde ich irgendeinen Adpater (egal welcher Form) an die Listview, aber nur um die Daten darzustellen?

    Die daten selber mit denen ich arbeite sind in einem Container (Adapter,Array oder wie auch immer)?

    Vom geklickten Element bekomme ich ja nur die Position oder? Wie weiß ich dann, welches Element im Adapter das zugehörige ist?

    Irgendwo hab ich vom SimpleCusorAdapter und einer _id gelesen, ist diese ID nur eine interne ID vom Adapter oder ist das eine zwingende eindeutige ID die ich zur Verfügung stellen muss beim "paste" der Daten in den Adapter??

    lg
    Peter
     
  4. strider, 22.12.2011 #4
    strider

    strider Erfahrener Benutzer

    Beiträge:
    208
    Erhaltene Danke:
    45
    Registriert seit:
    30.09.2011
    Phone:
    Nexus S
    Der Adapter merkt sich die Daten die er an die Listview oder Gridview liefert üblicherweise in einem Array oder Liste oder einem anderen Container der irgendwie indizierbar ist.
    Wenn die Listview Daten will um eine Listenspalte zu füllen frägt sie beim Adapter die Methode getView() ab. Hier übergibt sie die Position der Listenspalte die gefüllt werden soll. Sinnigerweise ist diese Position der Listenspalte normalerweise in Übereinstimmung mit dem Index im Container den der Adapter benutzt um seine Datenelemente zu speichern.
    Der Adapter baut dann in seiner getView() Methode eine View zusammen die Daten aus seinem Array/List/etc[position] enthält und gibt diese view zurück an die Listview die angefragt hat.
    Das was der Adapter als view zurückgeliefert hat baut die Listview ganz einfach dann an die Spaltenposition ein, die sie angefragt hat.
    Der SimpleCursorAdapter ist ein Spezialfall eines Adapters wie auch z.B der ArrayAdapter.
    Der Cursor Adapter ist dazu gedacht Daten direkt aus einem Cursor in einer Liste darzustellen. Der Cursor kann z.B aus einer Datenbank oder einem Content Provider kommen.
     
  5. Fant, 22.12.2011 #5
    Fant

    Fant Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    21.12.2011
    Hallo, danke schon mal für die Antworten.

    Um diesen Index muss ich mich aber nicht kümmern, wenn ich ein Array befülle dann hab ich ja automatisch einen Index und diesen Index verwendet dann auch die Listview automatisch?

    So wie ich das verstehe muss ich mir aber in meinem Fall (für die Kategorien) keinen eigenen Adapter bauen, sondern kann ruhig den ArrayAdapter/Simplecurosr-Adapter verwenden oder? Der sollte das alles können. Und wenn ich einen eigenen Listview-Style haben möchte so generiere ich eine xml mit dem Style, benenne die Felder und binde dann den Adapter an diese einzelnen felder in einer schleife?

    Mit eigener Listview kann ich die Klasse von Activity ableiten, wenn ich eine vorgefertigte Listview verwenden will dann muss ich das von ListActivity ableiten oder??

    lg
     
  6. swordi, 22.12.2011 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ob du jetzt activity oder listactivity nimmst ist im prinzip egal.
     
  7. Fant, 22.12.2011 #7
    Fant

    Fant Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    21.12.2011
    Naja wenn ich eine bereits vorgefertigte Klasse verwende dann muss ich schon von Listactivity ableiten oder?

    Nur wenn ich selber was baue bringt die Ableitung von Listactivity nichts, weil ich das Listview-Element (die Row) eh selbst gebaut hab (xml)?

    Oder versteh ich da was falsch?

    P.S.: Ihr seid schnell!!! :)
     
  8. swordi, 22.12.2011 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    nein das hat damit nichts zu tun.

    du kannst genauso eine acitivty als base nehmen.

    dort eine listview reinladen, dieser listview einen adapter geben und die klicks abfangen. die listactivity stellt dir diese methoden halt selbst zur verfügung.

    Wenn du weißt, dass diese Acitvity hauptsächlich die liste verarbeiten wird, dann nimm einfach eine listactivity als basis und gut ist ... :D
     

Diese Seite empfehlen