2013-07-04 5 views
5

나는 ArrayList를 가지고 있으며 모든 배열 데이터를 해시 맵에 저장하려고하지만 문제는 배열 목록의 마지막 인덱스 값입니다. 다음은 블록arraylist의 모든 값을 android의 hashmap에 저장하는 방법은 무엇입니까?

당신은 "지도"의 하나 개의 인스턴스를위한 내부

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

를 삽입해야 내 코드

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

luisZavaleta 님의 답변은 정확하지만 POJO를 실제로 사용해야 할 때 여전히지도를 남용하고 있습니다. –

+0

@MattBall 왜 이것이지도의 남용으로 간주되어야합니까? – Sebastialonso

답변

9

그리고 당신은 그 값을 변경하고 지도.

2

문제는지도 개체를 사용하는 방법입니다. 지도를 목록에 추가하면 새 사본이 추가되지 않습니다. 대신 참조를지도에 복사하고 있습니다. 그래서 정말로 매번 동일한 맵을 추가하고 있습니다. 루프의 마지막 실행에서 맵의 모든 값을 배열의 마지막 객체 값으로 덮어 씁니다. 그래서 마지막 요소 만 추가되는 것처럼 보입니다. 내가 작성한대로이 루이즈 자 발레타는 방금해야 할 일을 게시 했으므로 그에게 귀 기울여 들으십시오.

2
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); 
} 
+0

이미 @luisZavaleta에 감사 드렸습니다. – NewDroidDev

관련 문제