繁体   English   中英

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

[英]How to add event in alamkanak week view

我在我的应用程序中使用alam kanak周视图 我有一个活动,知道日期,开始时间和结束时间。 现在调用什么函数将此事件添加到周视图中。 假设我的日期是2015年10月20日,时间是17:30至18:30。 我无法将此事件添加到视图中。 请提供是否有任何东西。

这是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);

此事件显示。 这是我从服务器收到的针对自定义事件的响应:

{“错误”: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}]}

这是我添加活动的方式:

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();
        }

这不会出现。 我不明白怎么了。 请帮忙。

我通过在库中进行一些更改来完成此操作:

更改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 界面如下所示:

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

现在,您将在ActivityFragment类中获得Calendar对象:

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

希望这会帮助你。

嗨,您好,您有这个代码,它对我有用。

那里有两种添加事件的方法。

事实是,当您添加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;
}

希望能帮助到你。

可能是您添加了事件的问题,但您已将事件月份设置为startTime.set(Calendar.MONTH, date_month); 不是上个月。 因此您的活动会在上个月的同一日期添加。 检查..如果是这种情况,则将其替换为

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

暂无
暂无

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

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