메뉴 건너뛰기

조회 수 18552 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

일단 기본적으로 달력을 만드는 것은 앞에 예제에 있어서 쉽게 구현했다.

그리드 뷰를 이용하고 클릭리스너를 상속받은 클래스를 만들어서 클릭했을경우 클릭한 날은 노란색으로 표시되도록 하는 기능이 있다.

 

이제 여기에 메뉴버튼을 눌러서 스케쥴을 입력할 수 있는 창과 스케쥴이 있는 날에는 달력 아래에 리스트뷰로 스케쥴들이 보여지는 것만 추가하면 된다. 생각하기에는 엄청 쉬워서 '한 2시간이면 하겠네~' 라고 생각했는데,,,,, 이런?  무려 3일동안 끙끙 거렸다.

 

일단 리스트 뷰 구현이 생각보다 어려웠다. 이전 예제에서는 레이아웃 인플래터를 이용해서 요로케 조로케 이용했는데 그거 보고는 도저히  이해가 안되서 그냥 Step by Step 안드로이드 책을 보고 이용했다. 단순히 레이아웃에 리스트뷰를 추가하고 MainActivity에서 불러와서 썻다.

 

문제는 메뉴를 눌러서 스케쥴을 추가하는 것이였다. 다이얼로그를 만드는데 새 다이얼로그창을 만들고 그안에 버튼을 눌렀을때 클릭이 자꾸 안되는 것이였다. 알고보니 커스텀 다이얼로그창을 만들경우 사용하는 레이아웃안에 뷰들을 선언할때 레이아웃 이름을 써줘야 하는 것이였다. 예를들어 다이얼로그안에 있는 버튼을 사용하기위해서는 customDialog.findViewById(R.id.Button)이런식으로 앞에 레이아웃 이름을 써줘야 한다. 아마 메인 액티비티에서 쓰는 레이아웃과 다이얼로그의 레이아웃이 다르지만 함수처리하는 부분은 메인이라서 이런식으로 불러와서 선언을 해줘야 하나 보다. 아무튼 우역곡절끝에 겨우 만들었다. 코드는 메인만 첨부.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
package com.example.challenge07;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
 
public class MainActivity extends Activity implements OnTimeChangedListener {
 
    CalendarView monthView;
    CalendarAdapter monthViewAdapter;
    
    TextView monthText;
    private final int DIALOG_CUSTOM_ID = 1;
    
    ListView lv;
    ArrayList<DayData> dayData;
    
    int curYear;
    int curMonth;
    int curDay;
    String txt ="";
    int curHour;
    int curMin;
    
    EditText et;
    Button save;
    
    ArrayAdapter<String> adapter;
    ArrayList<String> as;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
         dayData = new ArrayList<DayData>();
        
        
        
        ArrayList<String> ts = new ArrayList<String>();
        ts.add("안녕");
        ts.add("안녕");
 
        
        lv = (ListView)findViewById(R.id.listView);
        
        monthView = (CalendarView) findViewById(R.id.monthView);
        monthViewAdapter = new CalendarAdapter(this);
        monthView.setAdapter(monthViewAdapter);
        
        monthView.setOnDataSelectionListener(new OnDataSelectionListener(){
            public void onDataSelected(AdapterView parent, View v, int position, long id){
                MonthItem curItem = (MonthItem) monthViewAdapter.getItem(position);
                curDay = curItem.getDay();
                as = new ArrayList<String>();
                for(int i =0; i< dayData.size();i++){
                    if(dayData.get(i).getDay() ==curDay){
                        as.add(dayData.get(i).getScadule());
                    }
                }
                
                updateLv();
                
                
                
                
                
            }
        });
        
        
        
        monthText = (TextView)findViewById(R.id.monthText);
        setMonthText();
        
        Button monthPrevious = (Button)findViewById(R.id.monthPrevious);
        monthPrevious.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                monthViewAdapter.setPreviousMonth();
                monthViewAdapter.notifyDataSetChanged();
                setMonthText();
            }
        });
        
        Button monthNext = (Button)findViewById(R.id.monthNext);
        monthNext.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                monthViewAdapter.setNextMonth();
                monthViewAdapter.notifyDataSetChanged();
                setMonthText();
            }
            
        }
        
                );
        
        
    
    }
    
    
    public void updateLv(){
        adapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,as);
        lv.setAdapter(adapter);
    }
    
    private void setMonthText(){
        curYear = monthViewAdapter.getCurYear();
        curMonth = monthViewAdapter.getCurMonth();
        
        monthText.setText(curYear + "년" + (curMonth+1) + "월");
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item){
        int curId = item.getItemId();
        
        if(curId == R.id.action_settings){
            final DayData dd = new DayData(curYear, curMonth, curDay);
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            View dia = View.inflate(this, R.layout.dia, null);
            builder.setTitle("일정추가");
            builder.setView(dia);
            save = (Button)dia.findViewById(R.id.button1);
            et = (EditText)dia.findViewById(R.id.editText1);
            final TimePicker tp = (TimePicker)dia.findViewById(R.id.timePicker1);
            tp.setOnTimeChangedListener(this);
            View.OnClickListener saveListener = new View.OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    txt = et.getText().toString();
                    
                    dd.setTime(tp.getCurrentHour(), tp.getCurrentMinute());
                    dd.setString(txt);
                    dayData.add(dd);
                }
            };
            save.setOnClickListener(saveListener);
            builder.show();
        }
        return true;
    }
 
    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
        // TODO Auto-generated method stub
        curHour = hourOfDay;
        curMin = minute;
    }
    
 
 
 
 
}
 

Challenge07.zip


List of Articles
번호 제목 날짜 조회 수
77 하이브리드앱 기본 - WebView로 웹페이지 띄우기 file 2020.12.14 1025
76 안드로이드 - 플로팅 액션 버튼(Floating Action Button) 사용법 file 2021.04.02 969
75 안드로이드 - RecyclerView의 ViewType 구분하기 file 2021.04.02 931
74 안드로이드 - 문자열 리소스(Resource) 추가 및 참조하기 file 2021.03.31 906
73 ListView 리스트뷰 연습3 - 커스텀 리스트뷰 (Custom ListView) file 2020.12.14 906
72 안드로이드 - RatingBar를 통해 별점주기 file 2021.04.02 848
71 안드로이드 - Json 파싱하기 file 2021.04.02 848
70 안드로이드 - 문자열 배열 리소스 추가하기 <string-array> file 2021.03.31 811
69 Firebase - 푸시알림 보내기 (2) 2021.09.30 768
68 안드로이드에서 url 주소로 이미지 바로 불러오기 (Glide 사용) 2020.12.14 759
67 안드로이드 - 리사이클러뷰 (RecyclerView) notifyDataSetChanged 실행 시 깜빡 거리는 현상 2021.04.02 748
66 안드로이드 - AlertDialog 사용하여 알림창 띄우는 방법 총정리 file 2021.03.31 687
65 안드로이드 - 갤러리에서 이미지 가져오기 2021.04.02 666
64 [Android] 퍼미션 권한체크(테드퍼미션) 2021.09.14 616
63 안드로이드 스튜디오 - 싱글톤 패턴 (SingleTon Pattenr) 클래스 자동 생성 file 2021.03.29 614
62 안드로이드 스튜디오 actionbar(액션바) 사라짐 file 2020.12.14 606
61 안드로이드 스튜디오 - getter/setter 메소드 자동생성 file 2021.03.29 583
60 안드로이드 - Text 입력 이벤트 처리 - TextWatcher file 2021.04.02 557
59 안드로이드 - 색상 리소스 (Color Resource) 추가 </color> file 2021.03.31 551
58 안드로이드 - 프레임레이아웃 (FrameLayout) file 2021.03.29 507
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved