Android日历视图addOnGlobalLayoutListener

Android日历视图addOnGlobalLayoutListener,android,Android,我需要在CalendarView的项上设置OnClickListener。我不明白为什么我的方法会循环 public class CalendarActivity extends Activity { CalendarView calendar; TextView dangerCalendar; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); set

我需要在CalendarView的项上设置OnClickListener。我不明白为什么我的方法会循环

public class CalendarActivity extends Activity {
CalendarView calendar; 
TextView dangerCalendar;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calendar);
calendar.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {     
        @Override
        public void onGlobalLayout() {
            SimpleDateFormat  formatter = new SimpleDateFormat("yyyy-MM-dd");
            String date = formatter.format(new Date(calendar.getDate()));
            setCount(getCount((getResources().getString(R.string.important)),date),dangerCalendar); 
        }
    });
}
方法getCount从数据库中获取计数行

public String getCount(String category, String date)
{
    return String.valueOf(new DBHandler(this).getCountTasks(category, date));
}
方法setCount将值从getCount设置为TextView

public void setCount(String count, TextView t) 
{
    switch(t.getId()){
    case R.id.dangerCalendar: 
        t.setText(count+" important tasks");
        break;
    case R.id.warningCalendar:
        t.setText(count+" usual tasks");
        break;
    case R.id.usualCalendar:
        t.setText(count+" pushover tasks");     
        break;
    }

}
但是onGlobalLayout循环