简体   繁体   English

如何在Alamkanak周视图中添加事件

[英]How to add event in alamkanak week view

I am using alam kanak week view in my app. 我在我的应用程序中使用alam kanak周视图 I have an event for which I know the date, the start time and the end time. 我有一个活动,知道日期,开始时间和结束时间。 Now what function to call to add this event to the weekview. 现在调用什么函数将此事件添加到周视图中。 Suppose the date I have is 20-10-2015 and time is 17:30 to 18:30. 假设我的日期是2015年10月20日,时间是17:30至18:30。 I am unable to add this event to the view. 我无法将此事件添加到视图中。 Please provide if there is anything. 请提供是否有任何东西。

This is how Alam-Kanak is adding an event: 这是Alam-Kanak添加事件的方式:

Calendar startTime = Calendar.getInstance();
        startTime.set(Calendar.HOUR_OF_DAY, 5);
        startTime.set(Calendar.MINUTE, 0);
        startTime.set(Calendar.MONTH, newMonth-1);
        startTime.set(Calendar.YEAR, newYear);
        startTime.add(Calendar.DATE, 1);
        Calendar endTime = (Calendar) startTime.clone();
        endTime.add(Calendar.HOUR_OF_DAY, 3);
        endTime.set(Calendar.MONTH, newMonth - 1);
        WeekViewEvent event = new WeekViewEvent(3, "Test title", startTime, endTime);
        event.setColor(getResources().getColor(R.color.event_color_03));
        CommonItems.events.add(event);

This event shows up. 此事件显示。 This is the response I am getting from my server for my custom event: 这是我从服务器收到的针对自定义事件的响应:

{ "error": false, "appointments": [ { "id": "1", "staff_id": null, "technician_id": "1", "name": "Test", "address": "Vijayanagar", "pincode": "580040", "mobile": "9876543210", "email": "test@gmail.com", "date": "2015-09-22", "time": "16:30:00", "latitude": null, "longitude": null, "status": "open", "created_at": "2015-09-06 18:04:47", "updated_at": null } ] } {“错误”:false,“约会”:[{“ id”:“ 1”,“ staff_id”:null,“ technician_id”:“ 1”,“ name”:“ Test”,“ address”:“ Vijayanagar” ,“ pincode”:“ 580040”,“ mobile”:“ 9876543210”,“ email”:“ test@gmail.com”,“ date”:“ 2015-09-22”,“ time”:“ 16:30: 00”,“纬度”:null,“经度”:null,“状态”:“ open”,“ created_at”:“ 2015-09-06 18:04:47”,“ updated_at”:null}]}

This is how I am adding my event: 这是我添加活动的方式:

try {
            JSONObject jo = new JSONObject(response);
            JSONArray ja = jo.getJSONArray("appointments");
            for (int i = 0; i < ja.length(); i++) {
                JSONObject index = ja.getJSONObject(i);

                String name = index.getString("name"); 

                String date = index.getString("date");
                String[] dateSplit = date.split("-");
                int date_year = Integer.parseInt(dateSplit[0]);
                int date_month = Integer.parseInt(dateSplit[1]);
                int date_day = Integer.parseInt(dateSplit[2]);

                String time = index.getString("time");
                String[] timeSplit = time.split(":");
                int time_hour = Integer.parseInt(timeSplit[0]);
                int time_minute = Integer.parseInt(timeSplit[1]);

                Calendar startTime = Calendar.getInstance();
                startTime.set(Calendar.HOUR_OF_DAY, 4);
                startTime.set(Calendar.MINUTE, time_minute);
                startTime.set(Calendar.DATE, date_day);
                startTime.set(Calendar.MONTH, date_month);
                startTime.set(Calendar.YEAR, date_year);
                Calendar endTime = (Calendar) startTime.clone();
                endTime.set(Calendar.HOUR_OF_DAY, 4+1);
                endTime.set(Calendar.MINUTE, time_minute);

                WeekViewEvent event = new WeekViewEvent(1, name, startTime, endTime);
                event.setColor(getResources().getColor(R.color.event_color_01));

                CommonItems.events.add(event);

            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block

            e.printStackTrace();
        }

This wont show up.! 这不会出现。 I am unable to understand whats wrong. 我不明白怎么了。 Please help. 请帮忙。

I have done this way by little bit change in library: 我通过在库中进行一些更改来完成此操作:

Change onSingleTapConfirmed @Override method: 更改onSingleTapConfirmed @Override方法:

 @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {

        if (mEventClickListener != null) {
             boolean didSelect = false;
             if (mEventRects != null) {
             List<EventRect> reversedEventRects = mEventRects;
             Collections.reverse(reversedEventRects);

              for (EventRect event : reversedEventRects) {
                        if (event.rectF != null && e.getX() > event.rectF.left
                                                && e.getX() < event.rectF.right
                                                && e.getY() > event.rectF.top
                                                && e.getY() < event.rectF.bottom) {
                                            mEventClickListener.onEventClick(
                                                    event.originalEvent, event.rectF);
                                            playSoundEffect(SoundEffectConstants.CLICK);
                                            didSelect = true;
                                            break;
                                        }
                                    }
                                }
                                if (!didSelect) {
                                    int day_1 = mFirstVisibleDay.get(Calendar.DAY_OF_YEAR);
                                    int day_2 = mLastVisibleDay.get(Calendar.DAY_OF_YEAR);

                                    int chosen_day;

                                    if (day_1 != day_2) {
                                        chosen_day = (int) (day_1 - 1 + Math.round((e.getX()  - mHeaderColumnPadding - (mNumberOfVisibleDays-1)*mColumnGap - mTextSize)
                                                / mWidthPerDay));
                                    } else {
                                        chosen_day = day_1;
                                    }

                                    Calendar RETCAL = Calendar.getInstance();

                                    RETCAL.setTime(mFirstVisibleDay.getTime());

                                    // int totalY = mScroller

                                    int chosen_hour = Math.max(Math.min((int) Math.round((e.getY() - mHeaderTextHeight - mHeaderRowPadding  - mHeaderMarginBottom - mScroller
                                            .getCurrY()) / mHourHeight),23),0);


                                    RETCAL.set(Calendar.DAY_OF_YEAR, chosen_day);
                                    RETCAL.set(Calendar.HOUR_OF_DAY, chosen_hour-1);
                                    RETCAL.set(Calendar.MINUTE, 0);
                                    mEventClickListener.onNonEventSingleTap(RETCAL);


                                }

                            }
          return super.onSingleTapConfirmed(e);
    }

EventClickListener interface will looks like below: EventClickListener 界面如下所示:

public interface EventClickListener {
       public void onEventClick(WeekViewEvent event, RectF eventRect);
       public void onNonEventSingleTap(Calendar cal);
  }

Now you will get Calendar object in your Activity or Fragment class: 现在,您将在ActivityFragment类中获得Calendar对象:

@Override
    public void onNonEventSingleTap(Calendar cal) {
      // User cal object as Calendar
    }

Hope this will help you. 希望这会帮助你。

hi mate y have this code and it works for me. 嗨,您好,您有这个代码,它对我有用。

there you got two ways to add events. 那里有两种添加事件的方法。

the thing is that when you add the month variable it needs to be (month-1) like if you want to add an event on july you must insert 7-1=6; 事实是,当您添加month变量时,它必须为(month-1),例如,如果您想在7月添加事件,则必须插入7-1 = 6;

public List<WeekViewEvent> onMonthChange(int newYear, int newMonth) {
    // Populate the week view with some events.
    List<WeekViewEvent> events = new ArrayList<WeekViewEvent>();

    Calendar startTime = Calendar.getInstance();
    startTime.set(Calendar.DAY_OF_MONTH, 19);
    startTime.set(Calendar.HOUR_OF_DAY, 1);
    startTime.set(Calendar.MINUTE, 0);
    startTime.set(Calendar.MONTH, 10);
    startTime.set(Calendar.YEAR, 2015);
    Calendar endTime = (Calendar) startTime.clone();
    endTime.set(Calendar.DAY_OF_MONTH, 19);
    endTime.set(Calendar.HOUR_OF_DAY, 5);
    endTime.set(Calendar.MINUTE, 0);
    endTime.set(Calendar.MONTH, 10);
    endTime.set(Calendar.YEAR, 2015);
    WeekViewEvent event = new WeekViewEvent(0, "Epoca", startTime, endTime);
    event.setColor(getResources().getColor(R.color.orange));
    events.add(event);


    startTime = Calendar.getInstance();
    startTime.set(2015, 10, 19, 6, 00);
    endTime = Calendar.getInstance();
    endTime.set(2015, 10, 19, 9, 00);
    WeekViewEvent event2 = new WeekViewEvent(0,"00kjbhjbhjbjbhj",startTime, endTime);
    event2.setColor(getResources().getColor(R.color.orange));
    events.add(event2);


    return events;
}

hope it helps. 希望能帮助到你。

may be the issue is your events are added but u have set the event month as startTime.set(Calendar.MONTH, date_month); 可能是您添加了事件的问题,但您已将事件月份设置为startTime.set(Calendar.MONTH, date_month); it is not the previous month. 不是上个月。 so your events are added on the same date of previous month. 因此您的活动会在上个月的同一日期添加。 check that.. if thats the case then just replace that line with 检查..如果是这种情况,则将其替换为

startTime.set(Calendar.MONTH, date_month+1);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM