-
일정 기간 범위 선택하여 작업하는 샘플안드로이드(스튜디오)/막 써 2018. 2. 12. 22:56반응형
DateSearch_Sample_Activity.java
package com.abyser.activity;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import com.abyser.R;
import java.text.SimpleDateFormat;
/**
* 일정 기간 범위 선택 하여 작업하는 샘플 액티비티.
* Created by abyser on 2017-02-09.
*/
public class DateSearch_Sample_Activity extends Activity implements OnClickListener, OnDateSetListener{
private static final String LOG_TAG = "DateSearch_Sample_Activ";
private static final long ONE_DAY_MILLISECOND = 86400000;
private TextView tv_since;
private TextView tv_till;
private Button btn_search;
private boolean mIsClickSince;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_datesearch);
initValue();
initLayout();
}
/**
* 초기 값 설정.
*/
private void initValue(){
mIsClickSince = false;
}
/**
* 초기 레이아웃 설정.
*/
private void initLayout(){
tv_since = (TextView)findViewById(R.id.datesearch_sample_tv_since);
tv_till = (TextView)findViewById(R.id.datesearch_sample_tv_till);
btn_search = (Button)findViewById(R.id.datesearch_sample_btn_search);
tv_since.setText(new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() - (ONE_DAY_MILLISECOND * 3)));
tv_till.setText(new SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis()));
tv_since.setOnClickListener(this);
tv_till.setOnClickListener(this);
btn_search.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.datesearch_sample_tv_since: // 언제 부터
mIsClickSince = true;
int since_year = Integer.parseInt(tv_since.getText().toString().trim().substring(0, 4));
int since_month = Integer.parseInt(tv_since.getText().toString().trim().substring(5, 7));
int since_day = Integer.parseInt(tv_since.getText().toString().trim().substring(8, 10));
new DatePickerDialog(this, this, since_year, (since_month - 1), since_day).show();
break;
case R.id.datesearch_sample_tv_till: // 언제까지
mIsClickSince = false;
int till_year = Integer.parseInt(tv_till.getText().toString().trim().substring(0, 4));
int till_month = Integer.parseInt(tv_till.getText().toString().trim().substring(5, 7));
int till_day = Integer.parseInt(tv_till.getText().toString().trim().substring(8, 10));
new DatePickerDialog(this, this, till_year, (till_month - 1), till_day).show();
break;
case R.id.datesearch_sample_btn_search: // 검색
if(isSetDateOk()){
int search_since_year = Integer.parseInt(tv_since.getText().toString().trim().substring(0, 4));
int search_since_month = Integer.parseInt(tv_since.getText().toString().trim().substring(5, 7));
int search_since_day = Integer.parseInt(tv_since.getText().toString().trim().substring(8, 10));
int search_till_year = Integer.parseInt(tv_till.getText().toString().trim().substring(0, 4));
int search_till_month = Integer.parseInt(tv_till.getText().toString().trim().substring(5, 7));
int search_till_day = Integer.parseInt(tv_till.getText().toString().trim().substring(8, 10));
// TODO
}else{
Toast.makeText(DateSearch_Sample_Activity.this, "선택한 날짜의 범위가 잘못되었습니다", Toast.LENGTH_SHORT).show();
}
break;
}
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String pick_date = Integer.toString(year) + "-" + String.format("%02d-%02d", (monthOfYear + 1), dayOfMonth);
if(mIsClickSince){
tv_since.setText(pick_date);
}else{
tv_till.setText(pick_date);
}
}
/**
* 검색 날짜 범위를 제대로 설정했는지 여부 반환.
* @return <strong>true</strong> 범위 제대로 설정 함 <strong>false</strong> 범위 제대로 설정 안함
*/
private boolean isSetDateOk(){
int since_year = Integer.parseInt(tv_since.getText().toString().trim().substring(0, 4));
int since_month = Integer.parseInt(tv_since.getText().toString().trim().substring(5, 7));
int since_day = Integer.parseInt(tv_since.getText().toString().trim().substring(8, 10));
int till_year = Integer.parseInt(tv_till.getText().toString().trim().substring(0, 4));
int till_month = Integer.parseInt(tv_till.getText().toString().trim().substring(5, 7));
int till_day = Integer.parseInt(tv_till.getText().toString().trim().substring(8, 10));
if(since_year > till_year){
return false;
}else{
if(since_month > till_month){
return false;
}else if(since_month == till_month){
if(since_day > till_day){
return false;
}
}
return true;
}
}
}activity_datesearch.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<!-- 날짜 선택 사용 확인(필요시 사용) -->
<CheckBox
android:id="@+id/datesearch_sample_cb_date"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<!-- 날짜 선택 -->
<TextView
android:id="@+id/datesearch_sample_tv_since"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:gravity="center"
android:text="2016-01-01" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="1dp"
android:layout_weight="1"
android:gravity="center"
android:text="~" />
<TextView
android:id="@+id/datesearch_sample_tv_till"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:gravity="center"
android:text="2017-01-01" />
<!-- 검색 -->
<Button
android:id="@+id/datesearch_sample_btn_search"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:text="검색" />
</LinearLayout>반응형'안드로이드(스튜디오) > 막 써' 카테고리의 다른 글
네트워크 연결 여부 확인 메소드 (0) 2018.04.04 ExpandableListView 샘플 (0) 2018.03.17 단순 텍스트 로그용 액티비티 (0) 2017.11.27 태스크에 있는 액티비티 띄우기 (0) 2017.11.27 BaseAdapter를 사용시 유의 사항 (0) 2017.08.07