【问题标题】:How to put all value in arraylist to hashmap in android?如何将arraylist中的所有值放入android中的hashmap?
【发布时间】:2013-07-01 22:22:54
【问题描述】:

我有一个 ArrayList,我想将所有数组数据放入我的哈希映射中,但问题是我得到的只是数组列表的最后一个索引值。 这是我的代码

ArrayList<String> imagesFileName = new ArrayList<String>();
public String[] filename;

public static final String FILE_NAME = "filename";
public static final String DESCRIPTION = "filename1";
public static final String UPLOADEDBY = "filename2";
public static final String DATE_UPLOAD = "filename3";
public static final String ACTION = "filename4";
public static final String ID = "1";
ArrayList<HashMap<String, String>> mylist;

   filename = new String[imagesFileName.size()];
     for (int i = 0; i < imagesFileName.size(); i++) {
         filename[i] = imagesFileName.get(i);
    }


         mylist = new ArrayList<HashMap<String, String>>();
         HashMap<String, String> map = new HashMap<String, String>();
         for (int i = 0; i < imagesFileName.size(); i++) {
            map.put(FILE_NAME, filename[i]);
            map.put(DESCRIPTION, "desc");
            map.put(UPLOADEDBY, "uploadby");
            map.put(DATE_UPLOAD, "date_upload");
            map.put(ACTION, "delete");
            map.put(ID, "1");
            mylist.add(map);
    }


     adapter = new CustomArrayAdapter(getApplicationContext(), mylist, R.layout.attribute_ireport_list, 
             new String[]{FILE_NAME, DESCRIPTION, UPLOADEDBY, DATE_UPLOAD, ACTION, ID},
             new int[]{R.id.tv_File, R.id.txt_Desc, R.id.tv_UploadedBy, R.id.tv_DateUploaded, R.id.tv_Action, R.id.txt_id}, true);

        lv_iReport.setAdapter(adapter);

【问题讨论】:

  • luisZavaleta 的回答是正确的,但是当您真正应该使用 POJO 时,您仍在滥用/误用 Map。
  • @MattBall 为什么这应该被视为滥用地图?

标签: android arraylist hashmap


【解决方案1】:

你必须放

     HashMap<String, String> map = new HashMap<String, String>();

在 for 块内

您只有一个“地图”实例,并且您只是更改该地图的值。

【讨论】:

    【解决方案2】:

    问题在于您如何使用地图对象。当您将地图添加到列表中时,您不会添加它的新副本。相反,您正在复制对 Map 的引用。所以实际上你每次都在添加相同的地图。在循环的最后一次运行中,您使用数组中最后一个对象的值覆盖地图中的所有值。这就是为什么看起来只添加了最后一个元素的原因。在我写这篇文章时,luisZavaleta 刚刚发布了你需要做的事情,所以听他的。

    【讨论】:

      【解决方案3】:
       for (int i = 0; i < imagesFileName.size(); i++) {
          HashMap<String, String> map = new HashMap<String, String>();//put in it
          map.put(FILE_NAME, filename[i]);
          map.put(DESCRIPTION, "desc");
          map.put(UPLOADEDBY, "uploadby");
          map.put(DATE_UPLOAD, "date_upload");
          map.put(ACTION, "delete");
          map.put(ID, "1");
          mylist.add(map);
       }
      

      【讨论】:

        猜你喜欢
        • 2013-05-29
        • 2013-01-12
        • 2020-11-19
        • 2012-05-03
        • 2012-10-09
        • 2016-02-20
        • 2014-10-17
        • 1970-01-01
        • 2015-07-08
        相关资源
        最近更新 更多