繁体   English   中英

在Listview Android上查看ArrayList中的HashMap

[英]HashMap in ArrayList viewing on Listview Android

到目前为止,我所有的代码:

我将要显示的字符串放在列表列表中。(getDestinationCity和getTotalPrice)但是我在屏幕上只看到getTotalPrice值。 getDestinationCity字段为空。 我猜我只在屏幕上显示Keys(getDestinationCity)之外的Values(getTotalPrice)。

我该如何解决?

    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);

                }

            }
}

这是调试结果

我认为您应该这样做:

//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);

因此,您将获得一个映射列表,每个映射都有两个条目(因此具有两个键及其关联值)。
另外,请仔细阅读SimpleAdapter构造函数参数的含义:

建设者
@param context运行与此SimpleAdapter关联的View的上下文
@param data地图列表。 列表中的每个条目对应于列表中的一行。 Maps包含每一行的数据, 并且应包含“ from”中指定的所有条目
@param 资源定义此列表项的视图的视图布局的资源标识符。 布局文件应至少包括在“至”中定义的那些命名视图
@param from列名列表,该列名将添加到与每个项目关联的Map中。
@param to应当在“ from”参数中显示列的视图。 这些都应该是TextViews。 此列表中的前N个视图在from参数中获得了前N列的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM