0

namedescriptionstart timeend timeEventなどのさまざまな変数を持つクラスがあり、変数 date とこれらの変数を持つクラスがあります。今、私は の ArrayList を持ちたいのですが、すべてに同じ日にあるものを含める必要があります。デフォルトでは、イベントのリストを取得し、このリストに基づいて日を作成する必要があります。すべての時間はint形式です。DayArrayListEventsDaysDayEvents unix timestamp

私が求めているものを明確にする例:

Day 25.11
Event1
Event2
Event3

Day 26.11
Event1

Day 27.11
Event1
Event2
Event3
Event4

作業結果なしで試したコードがあります:

private void getObjects(String url) throws JSONException, Exception {
    JSONObject jsonObject = new JSONObject(new NetTask().execute(url).get());
        JSONArray job1 = jsonObject.getJSONArray("events");
        ArrayList<Event> events = new ArrayList<Event>();
        Calendar calPrev = Calendar.getInstance();
        boolean first = true;
        for (int i = 0; i < job1.length(); i++) {
            JSONObject myEventArray = job1.getJSONObject(i);
            int start = myEventArray.getInt("start");
            int end = myEventArray.getInt("end");
            String name = myEventArray.getString("name");
            String description = myEventArray.getString("description");

            if(first){
                calPrev.setTimeInMillis(start*1000L);
                events.add(new Event(start,end,name,description));
                first = false;
            }else{
                Calendar calCur = Calendar.getInstance();
                calCur.setTimeInMillis(start*1000L);

                if(calPrev.get(Calendar.YEAR) == calCur.get(Calendar.YEAR) && calPrev.get(Calendar.DAY_OF_YEAR) == calCur.get(Calendar.DAY_OF_YEAR)){
                    events.add(new Event(start,end,name,description));
                }else{
                    days.add(new Day(323,events)); // HERE I CREATE NEW DAY AND ADD IT TO ARRAY
                    events.clear();
                    events.add(new Event(start,end,name,description));
                }
            }
        }
    }
4

1 に答える 1

0

このメソッドを使用して一意の日を取得し、毎日のイベントをハッシュ マップに追加できますprivate HashMap<Integer, ArrayList<YourModel>> eventInfo = new HashMap<Integer, ArrayList<YourModel>>();

private List<String> getUniqueDays(List<YourModel> list)
{
    Set<String> res = new LinkedHashSet<String>();

    for (int i = 0; i < list.size(); i++)
    {
        if (list.get(i).getDay().length() > 0)
            res.add(list.get(i).getDay());
    }

    List<String> temp = new ArrayList<String>(res);
    Collections.sort(temp, dateComparator);
    return temp;
}

Comparator<String> dateComparator = new Comparator<String>()
{
    @Override
    public int compare(String lhs, String rhs)
    {
        try
        {
            DateFormat format = new SimpleDateFormat("MM-dd-yyyy h:mm:ss a");
            return format.parse(lhs).compareTo(format.parse(rhs));
        }
        catch (Exception e)
        {
            return 0;
        }
    }
};
于 2012-11-24T22:40:07.527 に答える