2012-02-22 74 views
0

我从我的数据库中检索有关位置的信息。在取回它们之后,我想将它们存储到一个ArrayList(它是“地址的ArrayList”),但是,每次写入新条目时,它都会覆盖之前的条目。我正在通过打印日志来测试它。是代码段:Android:ArrayList旧条目被新条目覆盖

response = CustomHttpClient.executeHttpPost("http://www.testing.com 
/requestPlaces.php", postParameters); 

      JSONArray jArray = new JSONArray(response); 

      for(int i = 0; i < jArray.length() ; i++) 
      { 
       Places place = new Places(); 
       JSONObject jObj = jArray.getJSONObject(i); 
       place.setPlace(
         jObj.optString("placeID"), 
         jObj.optString("placeName"), 
         jObj.optString("placeType"), 
         jObj.optString("placeLat"), 
         jObj.optString("placeLng"), 
         jObj.optString("placePict"), 
         jObj.optString("placeRegion")); 

       arrPlace.add(place); 
       for(int j = 0; j <= i ; j++) 
       { 
        Log.e("log_tag2", arrPlace.get(j).getPlaceID()); 
       } 

这是我的日志打印出来,显示了前一个条目已被覆盖:

02-22 16:30:26.538: E/log_tag2(6148): p0001 
02-22 16:30:26.538: E/log_tag(6148): p0002 
02-22 16:30:26.538: E/log_tag2(6148): p0002 
02-22 16:30:26.538: E/log_tag2(6148): p0002 
02-22 16:30:26.538: E/log_tag(6148): p0003 
02-22 16:30:26.538: E/log_tag2(6148): p0003 
02-22 16:30:26.538: E/log_tag2(6148): p0003 
02-22 16:30:26.538: E/log_tag2(6148): p0003 
02-22 16:30:26.538: E/log_tag(6148): p0004 
02-22 16:30:26.538: E/log_tag2(6148): p0004 
02-22 16:30:26.538: E/log_tag2(6148): p0004 
02-22 16:30:26.538: E/log_tag2(6148): p0004 
02-22 16:30:26.538: E/log_tag2(6148): p0004 
+0

它似乎是setPlace方法的某种问题,或者是由此方法写入的属性范围。你能否添加Places类代码? – 2012-02-22 08:46:59

+1

谢谢,它解决了。愚蠢的小东西!大声笑。 – DroidMatt 2012-02-22 08:48:50

回答

4

我猜想,你在static领域,而不是实例字段您的Places类。删除static修饰符:

class Places { 
    static int id; 
} 

E.g:

class Places { 
    int id; 
} 
+0

ü我的朋友,谢谢! – DroidMatt 2012-02-22 08:48:14

+0

@手稿我需要等待一段时间才能接受._。 – DroidMatt 2012-02-22 09:02:45

0

可能是你也想保持注销一侧添加到名单的循环的循环。

for(int i = 0; i < jArray.length() ; i++) 
     { 
       Places place = new Places(); 
       JSONObject jObj = jArray.getJSONObject(i); 
       place.setPlace(
         jObj.optString("placeID"), 
         jObj.optString("placeName"), 
         jObj.optString("placeType"), 
         jObj.optString("placeLat"), 
         jObj.optString("placeLng"), 
         jObj.optString("placePict"), 
         jObj.optString("placeRegion")); 

       arrPlace.add(place); 
       } 
       for(int j = 0; j <= i ; j++) 
       { 
        Log.e("log_tag2", arrPlace.get(j).getPlaceID()); 
       }