teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

関連ファイルを追記

2019/11/15 08:42

投稿

kashikoma
kashikoma

スコア8

title CHANGED
File without changes
body CHANGED
@@ -129,6 +129,7 @@
129
129
  `エラー: シンボルを見つけられません`
130
130
  `シンボル: メソッド setAdapter(CalendarAdapter)`
131
131
  `場所: タイプTableLayoutの変数 calendarTableLayout`
132
+
132
133
  ```ここに言語を入力
133
134
  import android.os.Bundle;
134
135
  import android.support.v4.app.Fragment;
@@ -182,11 +183,91 @@
182
183
 
183
184
  calendarTableLayout = view.findViewById(R.id.calendarTableLayout);
184
185
  mCalendarAdapter = new CalendarAdapter(getActivity());
185
- calendarTableLayout.setAdapter(mCalendarAdapter);
186
+ calendarTableLayout.setAdapter(mCalendarAdapter); //エラー箇所
186
187
  monthText.setText(mCalendarAdapter.getTitle());
187
188
 
188
189
  return view;
189
190
  }
190
191
 
191
192
  }
193
+ ```
194
+ ---
195
+ 関連ファイル
196
+
197
+ ・DateManager.java
198
+ ```ここに言語を入力
199
+ import java.text.SimpleDateFormat;
200
+ import java.util.ArrayList;
201
+ import java.util.Calendar;
202
+ import java.util.Date;
203
+ import java.util.List;
204
+ import java.util.Locale;
205
+
206
+ public class DateManager{
207
+ Calendar mCalendar;
208
+
209
+ public DateManager(){
210
+ mCalendar = Calendar.getInstance();
211
+ }
212
+
213
+ //当月の要素を取得
214
+ public List<Date> getDays(){
215
+ //現在の状態を保持
216
+ Date startDate = mCalendar.getTime();
217
+
218
+ //GridViewに表示するマスの合計を計算
219
+ int count = getWeeks() * 7 ;
220
+
221
+ //当月のカレンダーに表示される前月分の日数を計算
222
+ mCalendar.set(Calendar.DATE, 1);
223
+ int dayOfWeek = mCalendar.get(Calendar.DAY_OF_WEEK) - 1;
224
+ mCalendar.add(Calendar.DATE, -dayOfWeek);
225
+
226
+ List<Date> days = new ArrayList<>();
227
+
228
+ for (int i = 0; i < count; i ++){
229
+ days.add(mCalendar.getTime());
230
+ mCalendar.add(Calendar.DATE, 1);
231
+ }
232
+
233
+ //状態を復元
234
+ mCalendar.setTime(startDate);
235
+
236
+ return days;
237
+ }
238
+
239
+ //当月かどうか確認
240
+ public boolean isCurrentMonth(Date date){
241
+ SimpleDateFormat format = new SimpleDateFormat("yyyy.MM", Locale.US);
242
+ String currentMonth = format.format(mCalendar.getTime());
243
+ if (currentMonth.equals(format.format(date))){
244
+ return true;
245
+ }else {
246
+ return false;
247
+ }
248
+ }
249
+
250
+ //週数を取得
251
+ public int getWeeks(){
252
+ return mCalendar.getActualMaximum(Calendar.WEEK_OF_MONTH);
253
+ }
254
+
255
+ //曜日を取得
256
+ public int getDayOfWeek(Date date) {
257
+ Calendar calendar = Calendar.getInstance();
258
+ calendar.setTime(date);
259
+ return calendar.get(Calendar.DAY_OF_WEEK);
260
+ }
261
+
262
+ //翌月へ
263
+ public void nextMonth(){
264
+ mCalendar.add(Calendar.MONTH, 1);
265
+ }
266
+
267
+ //前月へ
268
+ public void prevMonth(){
269
+ mCalendar.add(Calendar.MONTH, -1);
270
+ }
271
+
272
+ }
192
273
  ```