package com.link2me.android.calendar;
import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.text.format.DateFormat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity;
import com.link2me.android.adpater.GridCellAdapter;
import java.util.Calendar; import java.util.Locale;
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = MainActivity.class.getSimpleName(); private Context mContext;
private TextView currentMonth; private ImageView prevYear; private ImageView prevMonth; private ImageView nextMonth; private ImageView nextYear; private ImageView selectDate;
private GridView calendarView; private GridCellAdapter adapter; private Calendar cal; private int month, year;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = MainActivity.this;
cal = Calendar.getInstance(Locale.getDefault()); month = cal.get(Calendar.MONTH) + 1; year = cal.get(Calendar.YEAR);
prevYear = (ImageView) this.findViewById(R.id.prevYear); prevYear.setOnClickListener(this);
prevMonth = (ImageView) this.findViewById(R.id.prevMonth); prevMonth.setOnClickListener(this);
currentMonth = (TextView) this.findViewById(R.id.currentMonth); currentMonth.setText(year +"년 " + month + "월"); currentMonth.setOnClickListener(this);
nextMonth = (ImageView) this.findViewById(R.id.nextMonth); nextMonth.setOnClickListener(this);
nextYear = (ImageView) this.findViewById(R.id.nextYear); nextYear.setOnClickListener(this);
selectDate = (ImageView) this.findViewById(R.id.selectDate); selectDate.setOnClickListener(this);
calendarView = (GridView) this.findViewById(R.id.calendar);
// Initialised adapter = new GridCellAdapter(mContext, month, year); adapter.notifyDataSetChanged(); calendarView.setAdapter(adapter); }
private void setGridCellAdapterToDate(int month, int year) { adapter = new GridCellAdapter(mContext, month, year); adapter.notifyDataSetChanged(); calendarView.setAdapter(adapter); // 상단 화면 날짜 출력 currentMonth.setText(year +"년 " + month + "월"); }
@Override public void onClick(View view) { switch (view.getId()) { case R.id.prevYear: year--; setGridCellAdapterToDate(month, year); break;
case R.id.prevMonth: if (month <= 1) { month = 12; year--; } else { month--; } setGridCellAdapterToDate(month, year); break;
case R.id.currentMonth: cal = Calendar.getInstance(Locale.getDefault()); // 현재날짜와 시간으로 설정된다. month = cal.get(Calendar.MONTH) + 1; // 0 ~ 11월을 반환하므로 + 1을 해준다. year = cal.get(Calendar.YEAR); setGridCellAdapterToDate(month, year); break;
case R.id.nextMonth: if (month > 11) { month = 1; year++; } else { month++; } setGridCellAdapterToDate(month, year); break;
case R.id.nextYear: year++; setGridCellAdapterToDate(month, year); break;
case R.id.selectDate: LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); final View layout = inflater.inflate(R.layout.select_calendar_input,null); AlertDialog.Builder cal_confirm = new AlertDialog.Builder(mContext); cal_confirm.setTitle("검색할 년도 입력"); cal_confirm.setView(layout); final EditText etYear = layout.findViewById(R.id.selectYear); final EditText etMonth = layout.findViewById(R.id.selectMonth); // 확인 버튼 설정 cal_confirm.setPositiveButton("검색", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String selectYear = etYear.getText().toString().trim(); if(selectYear.length() == 0) { AlertDialog.Builder phoneNO_confirm = new AlertDialog.Builder(mContext); phoneNO_confirm.setMessage("년도를 입력하세요.").setCancelable(false).setPositiveButton("확인", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 'YES' dialog.dismiss(); } }); AlertDialog alert = phoneNO_confirm.create(); alert.show(); return; }
String selectMonth = etMonth.getText().toString().trim(); if(selectMonth.length() == 0) { AlertDialog.Builder phoneNO_confirm = new AlertDialog.Builder(mContext); phoneNO_confirm.setMessage("월(月)을 입력하세요.").setCancelable(false).setPositiveButton("확인", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 'YES' dialog.dismiss(); } }); AlertDialog alert = phoneNO_confirm.create(); alert.show(); return; } month = Integer.parseInt(selectMonth); year = Integer.parseInt(selectYear); setGridCellAdapterToDate(month, year); } }); cal_confirm.setNegativeButton("취소", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); cal_confirm.show(); break; } }
@Override public void onDestroy() { Log.d(TAG, "Destroying View ..."); super.onDestroy(); } }
|