gpt4 book ai didi

java - 如何在 alamkanak 周 View 中添加事件

转载 作者:行者123 更新时间:2023-12-01 22:04:55 25 4
gpt4 key购买 nike

我正在使用alam kanak week view在我的应用程序中。我有一个 Activity ,我知道日期、开始时间和结束时间。现在调用什么函数来将此事件添加到周 View 中。假设我的日期是 2015 年 10 月 20 日,时间是 17:30 到 18:30。我无法将此事件添加到 View 中。有的话请提供。

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

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

{ "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 } ] }

这就是我添加事件的方式:

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
}

希望这对您有帮助。

关于java - 如何在 alamkanak 周 View 中添加事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32970830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com