package com.yuyh.sprintnba.ui; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.MenuItem; import android.widget.TextView; import com.yuyh.library.utils.log.LogUtils; import com.yuyh.sprintnba.R; import com.yuyh.sprintnba.base.BaseSwipeBackCompatActivity; import com.yuyh.sprintnba.http.bean.match.MatchCalendar; import com.yuyh.sprintnba.ui.presenter.impl.CalendarPagePresenter; import com.yuyh.sprintnba.ui.view.CalendarPageView; import com.yuyh.sprintnba.widget.calendar.CalConstant; import com.yuyh.sprintnba.widget.calendar.CalendarView; import com.yuyh.sprintnba.widget.calendar.ICalendarView; import java.lang.reflect.Field; import java.util.Calendar; import butterknife.InjectView; import butterknife.OnClick; /** * @author yuyh. * @date 16/6/11. */ public class CalendarActivity extends BaseSwipeBackCompatActivity implements CalendarPageView { public static void start(Activity activity, int requestCode) { Intent intent = new Intent(activity, CalendarActivity.class); activity.startActivityForResult(intent, requestCode); } @InjectView(R.id.calendar) CalendarView calendar; @InjectView(R.id.tvCalendarDate) TextView tvCalendarDate; @InjectView(R.id.tvMatchNum) TextView tvMatchNum; private MatchCalendar.MatchCalendarBean.MatchNum matchNum; private CalendarPagePresenter presenter; public static final String CALENDAR_DATE = "calendar_data"; private String date; @Override protected int getContentViewLayoutID() { return R.layout.activity_calendar; } @Override protected void initViewsAndEvents() { setTitle("日期选择"); presenter = new CalendarPagePresenter(this, this); presenter.getMatchCount(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH) + 1); calendar.setWeekTextStyle(1); tvCalendarDate.setText(getYearMonthText(calendar.getYear(), calendar.getMonth())); calendar.setOnRefreshListener(new ICalendarView.OnRefreshListener() { @Override public void onRefresh() { tvCalendarDate.setText(getYearMonthText(calendar.getYear(), calendar.getMonth())); } }); calendar.setOnItemClickListener(new ICalendarView.OnItemClickListener() { @Override public void onItemClick(int day) { int year = calendar.getYear(); int month = calendar.getMonth(); String date = year + "-" + month + "-" + day; CalendarActivity.this.date = date; LogUtils.i("date = " + date); showMatchNum(date, day); } }); } private void showMatchNum(String date, int day) { if (matchNum != null) { Class numCla = (Class) matchNum.getClass(); try { Field fs = numCla.getField("num" + day); LogUtils.i(fs.getName()); String num = fs.get(matchNum) == null ? "0" : (String) fs.get(matchNum); tvMatchNum.setText(date + " 共" + num + "场比赛"); } catch (Exception e) { LogUtils.e(e.toString()); tvMatchNum.setText(""); } } else { tvMatchNum.setText(""); } } @OnClick(R.id.btnPrev) public void preMonth() { Calendar c = calendar.getCalendar(); c.set(Calendar.MONTH, c.get(Calendar.MONTH) - 1); calendar.refresh(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1); matchNum = null; tvMatchNum.setText(""); presenter.getMatchCount(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1); } @OnClick(R.id.btnNext) public void nextMonth() { Calendar c = calendar.getCalendar(); c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1); calendar.refresh(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1); matchNum = null; tvMatchNum.setText(""); presenter.getMatchCount(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1); } private String getYearMonthText(int year, int month) { return new StringBuilder().append(CalConstant.MONTH_NAME[month - 1]).append(", ").append(year).toString(); } @Override public void renderMatchCount(MatchCalendar.MatchCalendarBean.MatchNum matchNum) { this.matchNum = matchNum; } @Override public void showLoadding() { showLoadingDialog(); } @Override public void hideLoadding() { hideLoadingDialog(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_calendar, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_calendar_ok) { Intent intent = new Intent(); intent.putExtra(CALENDAR_DATE, date); setResult(RESULT_OK, intent); finish(); } return super.onOptionsItemSelected(item); } }