2013-08-01 36 views
2

我想在android中的listview中以降序顯示一個日期...我寫了一個程序...它正確地顯示了它,但是當這個月的第一個日期到來時,上個月的日期不顯示只有一個日期顯示...是什麼原因?我如何改進我的代碼?請指導我..在android的listview中顯示日期的日期

我的代碼是在這裏...

public void datesadd() 
{ 
    listview.setAdapter(new ListAdapter(this)); 

     cc1=Calendar.getInstance(); 
     int mon1=cc1.getTime().getDate(); 
     Date dd=new Date(); 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
     while(mon1>=count) 
     { pos=0; 
      line=new HashMap<String,String>(); 
      String cdat=String.valueOf(cc1.get(Calendar.DATE)); 
      @SuppressWarnings("deprecation") 

      String mons=String.valueOf(cc1.get(Calendar.MONTH));   
      String day1=String.valueOf(cc1.getTime().getDay());    

      @SuppressWarnings("deprecation") 
      String year1=String.valueOf(cc1.get(Calendar.YEAR));  
      try { 
       dd=format.parse(year1+"-"+mons+"-"+cdat); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      line.put("yeari", year1); 
      line.put("mont",mons); 
      line.put("dayi",dd.toString().substring(0, 3)); 
      line.put("datei",cdat);    
      mon1--; 
      cc1.add(Calendar.DATE, -1); 
      Log.v("", "line"); 

      disp.add(line); 
     // here disp is ArrayList<Hashmap<String,String>> object, i was declared it on top of my main program 


     } 
} 

回答

0

我不認爲你會有關日期迭代正確的 - 你只是迭代以毫秒爲單位的值。

考慮一下:

/* From your code I'm not sure what count is, but you get the idea, you need 
* a Date object here or you can just use a for() loop if you know the number 
*       | 
*       V            */ 
while (cc1.getTime().after(count)) { 
    cc1.add(Calendar.DAY_OF_YEAR /*or month, year, whatever*/, -1); 

    // and then continue with your own code 
    line = new HashMap<String,String>(); 
    String cdat = String.valueOf(cc1.get(Calendar.DATE)); 
    // ... 
}