2016-06-01 17 views
0

Alle meinen Code so weit:.HashMap in Arraylist Anzeige auf Listview Android

ich die Zeichenfolge bin setzen, die ich auf dem Bildschirm in Liste der hardlist zeigen wollen (getDestinationCity und getTotalPrice) Allerdings sehe ich nur getTotalPrice-Werte auf dem Bildschirm. Das Feld "getDestinationCity" ist leer. Ich denke, ich zeige nur die Werte (getTotalPrice) auf dem Bildschirm außer Keys (getDestinationCity).

Wie kann ich es herausfinden?

public class MainActivity extends AppCompatActivity { 

    List<HashMap<String, String>> hardlist = new ArrayList<HashMap<String, String>>(); 

      String getTotalPrice = null; 
      String getDestinationCity = null; 
      ListView lv; 
      ListAdapter listAdapter; 

     @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 
       lv= (ListView)findViewById(R.id.listView1); 

       deserilaze(); 

       String[] from = new String[]{getDestinationCity, getTotalPrice}; 
       int[] to = new int[]{R.id.name, R.id.price}; 

       listAdapter = new SimpleAdapter(this, hardlist, R.layout.list_item, from, to); 

       lv.setAdapter(listAdapter); 
     } 

      public void deserilaze(){ 

       Gson gson = new Gson(); 

       AirJson airJson = gson.fromJson(airFullJson, AirJson.class); 

       for (Itinerary itini : airJson.getResult().getItineraries()) { 
     //   System.out.println("\n"); 
        String getSelectionID = itini.getSelectionId(); 
        getTotalPrice = itini.getPriceInfo().getPriceBreakdown().getTotalPrice().toString(); 
        String getCurrency = itini.getPriceInfo().getCurrency(); 

     //   System.out.println("Itinerary: " + "\n" + getSelectionID + "\n" + getTotalPrice + "\t" + getCurrency); 


        for (Trip tripin : itini.getTrips()) { 
         getDestinationCity = tripin.getDestinationCity(); 
         String getOriginCity = tripin.getOriginCity(); 
         String getValidatingCarrier = tripin.getValidatingCarrier(); 
         String getDepartureTime = tripin.getDepartureTime(); 
         String getArrivalTime = tripin.getArrivalTime(); 

     //    System.out.println("Trip: " + "\n" + getDestinationCity + "\n" + getOriginCity + "\n" + getValidatingCarrier + "\n" + 
     //      getDepartureTime + "\n" + getArrivalTime); 

         for (Segment segmenti : tripin.getSegments()){ 

          String getSegmentOrigin = segmenti.getDepartureTime(); 
          String getSegmentDestination = segmenti.getArrivalTime(); 

     //     System.out.println("Segment: " + "\n" + getSegmentOrigin + "\n" + getSegmentDestination); 

         } 

        } 

        HashMap<String, String> list = new HashMap<String, String>(); 
        list.put(getDestinationCity, getTotalPrice); 

        hardlist.add(list); 

       } 

      } 
} 

This is the debug result

Antwort

0

Ich glaube, Sie wie folgt tun sollten:

//these are the names of the columns 
String[] from = new String[]{"DestinationCity", "TotalPrice"}; 
... 
//you associate to the key DestinationCity the value getDestinationCity 
list.put("DestinationCity", getDestinationCity); 
//you associate to the key TotalPrice the value getTotalPrice 
list.put("TotalPrice", getTotalPrice); 

So finden Sie eine Liste der Karten, die jeweils Karte mit zwei Einträgen (so mit zwei Schlüssel und ihre zugehörigen Werte).
Außerdem lesen Sie die Bedeutung der SimpleAdapter Konstruktorparameter:

Constructor
@param Kontext Der Kontext, in dem die Ansicht mit diesem SimpleAdapter verbunden ist
@param Daten Eine Liste der Karten läuft . Jeder Eintrag in der Liste entspricht einer Zeile in der Liste. Die Karten enthalten die Daten für jede Zeile und sollten alle in "von" angegebenen Einträge enthalten
@param Ressource Ressourcen-ID eines Ansichtslayouts, das die Ansichten für dieses Listenelement definiert. Die Layoutdatei sollte mindestens die in "bis"
@param von definierten benannten Ansichten enthalten. Eine Liste der Spaltennamen, die der Karte für jedes Element hinzugefügt werden.
@param bis Die Ansichten, die die Spalte im Parameter "from" anzeigen sollen. Diese sollten alle TextViews sein. Die ersten N Ansichten in dieser Liste erhalten die Werte der ersten N Spalten im from Parameter.

+0

aber ich werde Tausende Felder in der Zukunft haben. Ich denke, es ist keine gute Idee, sie alle von Hand zu schreiben. Ich habe die Zeichenkette mit getDestinationCity getTotalPrice bezeichnet. – bkm

+0

Der 'from' -Parameter ist' Eine Liste von Spaltennamen, die zu der Karte hinzugefügt werden, die mit jedem Element verbunden ist'. Also hier nur die Namen Ihrer Spalten ... Haben Sie Tausende von Spalten? Ich denke nicht... – Rucsi