lem*_*des 15 android android-calendar
我已经实现了这个监听器,以便在单击某个日期时显示某些内容,但问题是当我向下滚动CalendarView时,它会自动显示一些内容但我没有点击任何内容,我只是向下滚动到在CalendarView的另一个月,然后有一个,比如一个Toast或一个Log,无论哪个(我猜它是有道理的,因为监听器本身触发`onDateChange,因为向下滚动日历也会改变当前选择的日期).所以我的问题是,是否有任何CalendarView的监听器,我可能只使用ondateChange监听器的替代方案,以避免当我向下滚动calendarView转到另一个月时它会自动解雇lisntener的情况.
任何知道CalendarView的替代列表器或任何人都知道解决方法的人?请分享
滚动时,日历onSelectedDayChange方法的行为类似于您单击不同的日期,但不会更改当前日期设置.所以HFDO5是对的,你只需要在创建日历时保存当前日期:
Long date = calendar.getDate();
并检查它onSelectedDayChange.
if(callendar.getDate() != date){
date = calendar.getDate(); //new current date
//date is changed on real click...do things..
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我遇到了同样的问题并找到了解决办法.
创建"长日期"变量,当您启动日历窗口时,将当前日期保存在此变量中.
Long date;
cv = (CalendarView)findViewById(R.id.calendarView1);
date = cv.getDate();
Run Code Online (Sandbox Code Playgroud)
现在在监听器中只检查新日期是否与日历相同:
cv.setOnDateChangeListener(new OnDateChangeListener(){
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
if(cv.getDate() != date){
date = cv.getDate();
Toast.makeText(view.getContext(), "Year=" + year + " Month=" + month + " Day=" + dayOfMonth, Toast.LENGTH_LONG).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
它对我有用:)
| 归档时间: |
|
| 查看次数: |
13744 次 |
| 最近记录: |