2013-07-04 20 views
5

Bir ArrayList'im var ve tüm dizi verilerini hash haritasına koymak istiyorum ancak sorun şu ki, dizi listesinin son dizin değeri. İşte sen bloktaAndroid'de tüm arraylist değerini hashmap'a nasıl ekleyebilirim?

Sen "map" yalnızca bir örneğini var içeride

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

koymalıdır kodum

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'nın cevabı doğrudur, ancak bir POJO kullanmanız gerektiğinde bir haritayı kötüye kullanmakta/yanlış kullanmaktadır. –

+0

@MattBall bu neden haritanın kötüye kullanılması olarak değerlendirilmeli? – Sebastialonso

cevap

9

ve sen sadece o değerini değiştiriyoruz harita.

2

Konu, harita nesnesini nasıl kullandığınızdır. Haritayı listeye eklediğinizde, yeni bir kopyasını eklemezsiniz. Bunun yerine, referansı Harita'ya kopyalarsınız. Yani her seferinde aynı haritayı ekliyorsunuz. Döngünün son çalıştırmasında, dizideki son nesnenin değerleri ile haritadaki tüm değerlerin üzerine yazarsınız. Bu yüzden sadece son element eklenmiş gibi görünüyor. Ben yazarken, bu luisZavaleta sadece yapmanız gerekenleri gönderdi, o yüzden onu dinle.

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

Bunu zaten yaptım ve @luisZavaleta için teşekkürler. – NewDroidDev

İlgili konular