0

特定の月の一連のイベントを返す配列があります。月によっては、同じ日に異なるイベントが開催される場合があります。重複する日付を検出し、2 つの別々の日付エントリではなく、同じ日付エントリの下に両方のイベントを表示するにはどうすればよいですか。

コード:

public void setListView(int month, int year, int dv) {

        events = new HolidayEvents();
        _calendar = Calendar.getInstance(Locale.getDefault());
        int totalDays = _calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        for(int i = 1; i <= totalDays; i++){
            if(isHoliday(i, month, year, dv))
            {
                date = i + " " + getMonthForInt(month-1) + " " + year;

                for (Event event : events.eventDetails(this, month, i) 
                {
                       summaries.add(new Summary(date, event.eventdetails));

                } 
            }
        }
}

出力:

1月11日は2つのイベントがあります。したがって、結果が表示されます。

11 January 2013 
-Event Name-
11 January 2013
-Event Name-

出力を次のように表示したいと思います。

11 January 2013
-Event Name | Event Name-
4

2 に答える 2

2

s を次のような構造に格納する場合Event:

Map<Date, List<Event>> eventMap= new HashMap<Date,List<Event>>();

d次のように、特定の日付のすべてのイベントを取得できます。

List<Event> events = eventMap.get(d);
于 2013-01-06T19:09:18.560 に答える
0
ListMultiMap<Date,Event> eventMap = ArrayListMultiMap<Date,Event>.create();

マルチマップに置くと、その日付のイベント リストにイベントが追加されます。日付を取得すると、その日付のすべてのイベントのリストが返されます。

少し面倒ですが、通常のマップを使用して手動でこれを行うこともできます。

http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ArrayListMultimap.html

于 2013-01-06T19:11:02.510 に答える