From 0652ce505b21d1217826a5b202c1b4a8f812a1f4 Mon Sep 17 00:00:00 2001 From: it232115 Date: Tue, 9 Jul 2024 11:32:19 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=88=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=AE=E6=88=90=E5=8A=9F=20maps.java=E3=81=B8?= =?UTF-8?q?=E3=81=AE=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=81=A8=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=81=AE=E5=8F=AF=E8=AA=AD=E6=80=A7=E5=90=91?= =?UTF-8?q?=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/MainActivity.java | 1 - .../main/java/com/example/oplogy/Maps.java | 211 +++++++++--------- 2 files changed, 111 insertions(+), 101 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index 08c3b08..f5216f6 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -51,7 +51,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe //取得するためのクラスID private int classId; - private String address; @Override diff --git a/app/src/main/java/com/example/oplogy/Maps.java b/app/src/main/java/com/example/oplogy/Maps.java index f4bf643..4baa164 100644 --- a/app/src/main/java/com/example/oplogy/Maps.java +++ b/app/src/main/java/com/example/oplogy/Maps.java @@ -48,8 +48,7 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O private LinearLayout locationsName; private Spinner dateSpinner; //GoogleMapAPiで使用可能な色 - private static final int[] COLORS = new int[]{ - Color.parseColor("#007FFF"), // HUE_AZURE + private static final int[] COLORS = new int[]{Color.parseColor("#007FFF"), // HUE_AZURE Color.parseColor("#0000FF"), // HUE_BLUE Color.parseColor("#00FFFF"), // HUE_CYAN Color.parseColor("#00FF00"), // HUE_GREEN @@ -73,24 +72,25 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + // バインディングの設定 binding = MapsBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); - SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() - .findFragmentById(R.id.map); + // マップフラグメントの設定 + SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); + // 各UI要素の設定 backMain = findViewById(R.id.BackMain); backMain.setOnClickListener(this); locationsName = findViewById(R.id.locationsName); - String dateData = formatDate(getSharedPreferencesData(0)) + "/" + formatDate(getSharedPreferencesData(1)) + "/" + formatDate(getSharedPreferencesData(2)); - + // スピナーの設定 + String dateDataString = formatDate(getSharedPreferencesData(0)) + "/" + formatDate(getSharedPreferencesData(1)) + "/" + formatDate(getSharedPreferencesData(2)); ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - String[] dates = dateData.split("/"); + String[] dates = dateDataString.split("/"); for (String date : dates) { adapter.add(date); } @@ -100,22 +100,18 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O int finalI = i; String dayString = getSharedPreferencesData(i); String formattedDayString = formatDate(dayString); - if (i == 0) { - dateMap.put(formattedDayString, () -> firstMapAndNames(createlocationData(finalI), getData(finalI))); - } else if (i == 1) { - dateMap.put(formattedDayString, () -> secondMapAndNames(createlocationData(finalI), getData(finalI))); - } else { - dateMap.put(formattedDayString, () -> thirdMapAndNames(createlocationData(finalI), getData(finalI))); - } + dateMap.put(formattedDayString, () -> loadMapAndNames(createlocationData(finalI), getscrollViewlData(finalI))); } + dateSpinner = findViewById(R.id.date); dateSpinner.setAdapter(adapter); + // スピナーのアイテム選択リスナーを設定 dateSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - String selectedItem = (String) parent.getItemAtPosition(position); - Runnable mapLoader = dateMap.get(selectedItem); + String selectedItemString = (String) parent.getItemAtPosition(position); + Runnable mapLoader = dateMap.get(selectedItemString); if (mapLoader != null) { mapLoader.run(); } @@ -128,16 +124,22 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O }); } - + //ルート表示を押して最初に表示されるルート(3日間の家庭訪問における1日目)の設定 @Override public void onMapReady(GoogleMap googleMap) { + //Google mapの定義 mMap = googleMap; mMap.setOnMarkerClickListener(this); - String latlngString = createlocationData(0); - String homeVisitDataString = getData(0); - firstMapAndNames(latlngString, homeVisitDataString); + //家庭訪問1日目のスケジュール順に緯度経度の情報をString型の変数に格納 + //35.1711355,136.88552149999998/35.1696089,136.884084/35.1732838,136.88832890000003/... + String locationDataString = createlocationData(0); + //家庭訪問1日目のスケジュール順に住所や出席番号、家庭訪問の開始時間の情報をString型の変数に格納 + //開始地点/出席番号2番:鈴木次郎<〒453-0015 愛知県名古屋市中村区椿町6−9 地下1階~5階> 06月04日12時00分/... + String scrollViewlDataString = getscrollViewlData(0); + loadMapAndNames(locationDataString, scrollViewlDataString); } + //家庭訪問の〇日目が何月何日かを返すメソッド private String getSharedPreferencesData(int i) { SharedPreferences sharedPreferences = getSharedPreferences("visitingDate", MODE_PRIVATE); // SetUpで設定した8桁の数字表記の家庭訪問日を日付表記に変更 @@ -152,49 +154,59 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O return dayString; } - + //家庭訪問の日付を8桁の整数表記から○月〇日(20240707→07月07日)表記に変更する private String formatDate(String date) { if (date == null || date.length() != 8) { return ""; } - String month = date.substring(4, 6); - String day = date.substring(6, 8); - return month + "月" + day + "日"; + String monthString = date.substring(4, 6); + String dayString = date.substring(6, 8); + return monthString + "月" + dayString + "日"; } + //家庭訪問1日目のスケジュール順に緯度経度の情報をString型の変数に格納 private String createlocationData(int i) { + //家庭訪問の開始地点の緯度経度 String startPointLatLngString = getIntent().getStringExtra("startPointLatLngString"); List myDataList = getMyDataList(); + //家庭訪問の緯度経度情報をまとめる変数 StringBuilder latlngString = new StringBuilder(); - for (int y = -1; y < myDataList.size(); y++) { if (y < 0) { + //家庭訪問の開始地点を追加 latlngString.append(startPointLatLngString); } else if (myDataList.get(y).getScheduleDay().equals(getSharedPreferencesData(i))) { if (latlngString.length() > 0) { + //区切りのスラッシュ latlngString.append("/"); } + //mydataListから取り出した家庭訪問の各家庭の住所の緯度経度を追加 + //この時点ではlongitude latitudeのような不要な文字があるのでformatLatLngメソッドで緯度経度だけのデータにする latlngString.append(formatLatLng(myDataList.get(y))); } } - + //各家庭の緯度経度をまとめたものを返す return latlngString.toString(); } + //緯度と経度は(35.1711355,136.88552149999998)のように()の中に入っているのでそこだけを取り出す private String formatLatLng(MyDataClass myData) { - String latlng = myData.getLatLngString(); - int startIndex = latlng.indexOf("(") + 1; - int endIndex = latlng.indexOf(")"); - return latlng.substring(startIndex, endIndex); + String latlngString = myData.getLatLngString(); + int startIndex = latlngString.indexOf("(") + 1; + int endIndex = latlngString.indexOf(")"); + return latlngString.substring(startIndex, endIndex); } - private String getData(int i) { + //ScrollViewにて表示するdataの作成メソッド + private String getscrollViewlData(int i) { List myDataList = getMyDataList(); String homeVisitDataString = ""; for (int y = -1; y < myDataList.size(); y++) { if (y < 0) { + //家庭訪問の開始地点 homeVisitDataString += "開始地点/"; } else if (myDataList.get(y).getScheduleDay().equals(getSharedPreferencesData(i)) && y + 1 < myDataList.size()) { + //出席番号:生徒の名前 <住所> 家庭訪問の開始時間+/ homeVisitDataString += "出席番号" + String.valueOf(myDataList.get(y).getStudentNumber()) + "番:" + myDataList.get(y).getChildName() + "<" + myDataList.get(y).getAddress().get(0) + "> " + formatSchedule(String.valueOf(myDataList.get(y).getSchedule())) + "/"; } else if (myDataList.get(y).getScheduleDay().equals(getSharedPreferencesData(i))) { homeVisitDataString += "出席番号" + String.valueOf(myDataList.get(y).getStudentNumber()) + "番:" + myDataList.get(y).getChildName() + " <" + myDataList.get(y).getAddress().get(0) + "> " + formatSchedule(String.valueOf(myDataList.get(y).getSchedule())); @@ -203,12 +215,13 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O return homeVisitDataString; } + //家庭訪問のscheduleを7桁の整数から○月〇日●時〇分(6041200→06月12日05時20分)に変換 private String formatSchedule(String schedule) { - String month = "0" + schedule.substring(0, 1); - String day = schedule.substring(1, 3); - String hour = schedule.substring(3, 5); - String minute = schedule.substring(5, 7); - return month + "月" + day + "日" + hour + "時" + minute + "分"; + String monthString = "0" + schedule.substring(0, 1); + String dayString = schedule.substring(1, 3); + String hourString = schedule.substring(3, 5); + String minuteString = schedule.substring(5, 7); + return monthString + "月" + dayString + "日" + hourString + "時" + minuteString + "分"; } // 共有プリファレンスからMyDataListを取得するメソッド @@ -217,40 +230,22 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O SharedPreferences sharedPreferences = getSharedPreferences("MyDataList", MODE_PRIVATE); // 共有プリファレンスからJSON形式のデータを取得 - String json = sharedPreferences.getString("myDataList", ""); + String jsonString = sharedPreferences.getString("myDataList", ""); // JSON形式のデータをMyDataListに変換 Gson gson = new Gson(); Type type = new TypeToken>() { }.getType(); - List myDataList = gson.fromJson(json, type); + List myDataList = gson.fromJson(jsonString, type); return myDataList; } - private void firstMapAndNames(String latlngStringFirstDay, String homeVisitDataString) { - String locationData = latlngStringFirstDay; - String labelData = homeVisitDataString; - Log.d("maps", "locationData" + locationData); - Log.d("maps", "labelData" + labelData); - loadMapAndNames(locationData, labelData); - } - - private void secondMapAndNames(String latlngStringSeconfDay, String homeVisitDataString) { - String locationData = latlngStringSeconfDay; - String labelData = homeVisitDataString; - loadMapAndNames(locationData, labelData); - } - - private void thirdMapAndNames(String latlngStringThirdDay, String homeVisitDataString) { - String locationData = latlngStringThirdDay; - String labelData = homeVisitDataString; - loadMapAndNames(locationData, labelData); - } - + //mapやgetscrollViewlに値を渡すハブの役割のメソッド private void loadMapAndNames(String locationData, String nameData) { try { + //mapに関するすべてのデータをリセット latLngList.clear(); nameList.clear(); colorList.clear(); @@ -258,31 +253,31 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O mMap.clear(); // locationDataをスラッシュで分割して緯度経度リストを取得 - String[] locArray = locationData.split("/"); + String[] locArrayString = locationData.split("/"); // nameDataをスラッシュで分割して名前リストを取得 - String[] nameArray = nameData.split("/"); + String[] nameArrayString = nameData.split("/"); - for (int i = 0; i < locArray.length; i++) { + for (int i = 0; i < locArrayString.length; i++) { // 緯度経度をカンマで分割してLatLngオブジェクトを作成 - String[] latLng = locArray[i].split(","); - if (latLng.length == 2) { - double latitude = Double.parseDouble(latLng[0]); - double longitude = Double.parseDouble(latLng[1]); - LatLng position = new LatLng(latitude, longitude); + String[] latLngString = locArrayString[i].split(","); + if (latLngString.length == 2) { + double latitudeDouble = Double.parseDouble(latLngString[0]); + double longitudeDouble = Double.parseDouble(latLngString[1]); + LatLng position = new LatLng(latitudeDouble, longitudeDouble); latLngList.add(position); // 名前リストから対応する名前を取得 - String name = nameArray.length > i ? nameArray[i] : "Unknown"; - nameList.add(name); + String nameString = nameArrayString.length > i ? nameArrayString[i] : "Unknown"; + nameList.add(nameString); // 色リストから次の色を取得 - int color = getNextColor(); - colorList.add(color); + int colorInt = getNextColor(); + colorList.add(colorInt); // 地図にピンを追加 - addPinToMap(name, position, color); + addPinToMap(nameString, position, colorInt); // スクロールビューに場所を追加 - addLocationToScrollView(name, color); + addLocationToScrollView(nameString, colorInt); } } @@ -292,10 +287,12 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O drawRoute(); // ルートを描画するメソッドを呼び出す } } catch (Exception e) { - Log.e("Maps", "Error loading maps and names", e); + Log.e("Maps", "エラーが発生しました。原因は以下", e); } } + // ルートを描画するメソッド + // Google マップの Directions API を使用してルート情報を取得し、ポリラインで描画 private void drawRoute() { new Thread(() -> { try { @@ -312,25 +309,27 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O } } urlBuilder.append("&mode=driving"); - urlBuilder.append("&key=").append(getString(R.string.maps_api_key)); + //APiキーの設定 + urlBuilder.append("&key=").append("AIzaSyBQ1Ak-I2NL5TP4K59ZI0VgzKk6HNZuusw"); String urlString = urlBuilder.toString(); Log.d("Maps", "Directions API URL: " + urlString); + // Directions APIにリクエストを送信してレスポンスを取得 URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); InputStreamReader isr = new InputStreamReader(conn.getInputStream()); BufferedReader br = new BufferedReader(isr); StringBuilder jsonResults = new StringBuilder(); - String line; - while ((line = br.readLine()) != null) { - jsonResults.append(line); + String lineString; + while ((lineString = br.readLine()) != null) { + jsonResults.append(lineString); } br.close(); Log.d("Maps", "API response: " + jsonResults.toString()); - + // レスポンスからルート情報を取得してポリラインで描画 JsonObject jsonObject = new Gson().fromJson(jsonResults.toString(), JsonObject.class); JsonArray routes = jsonObject.getAsJsonArray("routes"); if (routes.size() > 0) { @@ -343,36 +342,41 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O runOnUiThread(() -> mMap.addPolyline(new PolylineOptions().addAll(points).width(5).color(Color.BLUE))); } else { + // ルートが見つからなかった場合のエラーメッセージを表示 JsonPrimitive errorMessage = jsonObject.getAsJsonPrimitive("error_message"); if (errorMessage != null) { - Log.e("Maps", "Error: " + errorMessage.getAsString()); + Log.e("Maps", "エラーが発生しました。原因は以下: " + errorMessage.getAsString()); } else { - Log.e("Maps", "No routes found and no error message provided"); + Log.e("Maps", "原因不明のエラー"); } } } catch (Exception e) { - Log.e("Maps", "Error drawing route", e); + Log.e("Maps", "ルートの描画に失敗しました", e); } }).start(); } + // エンコードされた文字列から座標情報をデコードするためのメソッド private List decodePoly(String encoded) { - List poly = new ArrayList<>(); - int index = 0, len = encoded.length(); - int lat = 0, lng = 0; + List poly = new ArrayList<>(); // 座標情報を格納するリスト + int index = 0, len = encoded.length();// 文字列のインデックスと長さ + int latInt = 0, lng = 0; // 緯度と経度の初期値 + // 文字列の長さに達するまで繰り返す while (index < len) { int b, shift = 0, result = 0; + // バイト値を取得し、ビットシフトとOR演算を行って座標値を復元する do { b = encoded.charAt(index++) - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); - lat += dlat; + latInt += dlat; shift = 0; result = 0; + // バイト値を取得し、ビットシフトとOR演算を行って座標値を復元する do { b = encoded.charAt(index++) - 63; result |= (b & 0x1f) << shift; @@ -380,34 +384,35 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O } while (b >= 0x20); int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); lng += dlng; - - LatLng p = new LatLng((((double) lat / 1E5)), (((double) lng / 1E5))); + // LatLngオブジェクトを作成してリストに追加する + LatLng p = new LatLng((((double) latInt / 1E5)), (((double) lng / 1E5))); poly.add(p); } + // 座標情報のリストを返す return poly; } - + // Colorクラスを使用して、与えられた色から色相値を計算するメソッド private float getHueFromColor(int color) { float[] hsv = new float[3]; - Color.colorToHSV(color, hsv); + Color.colorToHSV(color, hsv);//整数の色値をHSV(色相、彩度、明度)の形式に変換し、色相値を取得します。 return hsv[0]; } + //mapにピンを追加するメソッド private void addPinToMap(String locationName, LatLng position, int color) { - Marker marker = mMap.addMarker(new MarkerOptions() - .position(position) - .title(locationName) - .icon(BitmapDescriptorFactory.defaultMarker(getHueFromColor(color))) - ); + // マーカーオプションを作成し、位置、タイトル、色を設定する + Marker marker = mMap.addMarker(new MarkerOptions().position(position).title(locationName).icon(BitmapDescriptorFactory.defaultMarker(getHueFromColor(color)))); if (marker != null) { marker.setTag(locationName); } } + // スクロールビューに位置情報を追加するメソッド private void addLocationToScrollView(String locationName, int color) { runOnUiThread(() -> { try { + // テキストビューの作成 TextView textView = new TextView(this); textView.setText(locationName); textView.setTextSize(20); @@ -416,7 +421,7 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O // テキストビューにクリックリスナーを追加 textView.setOnClickListener(v -> { - // 名前リストからインデックスを取得 + // 名前リストから位置情報を取得 int index = nameList.indexOf(locationName); if (index != -1) { LatLng position = latLngList.get(index); @@ -425,15 +430,14 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O } }); + // 下線のビューの作成 View underline = new View(this); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - 3 - ); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 3); params.setMargins(0, 0, 0, 16); underline.setLayoutParams(params); underline.setBackgroundColor(Color.BLACK); + // テキストビューと下線のビューをスクロールビューに追加 locationsName.addView(textView); locationsName.addView(underline); } catch (Exception e) { @@ -455,13 +459,20 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O } } + @Override + //マーカーがクリックされた際の処理を行うメソッド public boolean onMarkerClick(Marker marker) { + // マーカーから場所の名前を取得します。 String locationName = (String) marker.getTag(); + // 場所の名前がnullではない場合に処理を実行します。 if (locationName != null) { + // マーカーのタイトルとして場所の名前を設定します。 marker.setTitle(locationName); + // マーカーの情報ウィンドウを表示します。 marker.showInfoWindow(); } + // デフォルトの動作も実行するためにfalseを返します。 return false; } } From 470abcd53e1cdd72830977f2e4e4c0d16df786ec Mon Sep 17 00:00:00 2001 From: it232115 Date: Tue, 9 Jul 2024 12:10:14 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E5=85=A8=E3=81=A6=E3=81=AE=E5=A4=89?= =?UTF-8?q?=E6=95=B0=E5=90=8D=E3=81=AB=E5=9E=8B=E5=90=8D=E3=81=8C=E3=82=8F?= =?UTF-8?q?=E3=81=8B=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E8=BF=BD=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/Converters.java | 6 +- .../java/com/example/oplogy/CreateUUID.java | 12 +- .../java/com/example/oplogy/DatePick.java | 12 +- .../FirestoreReception_classIdDatabase.java | 3 - .../java/com/example/oplogy/GeoCoder.java | 59 ------ .../java/com/example/oplogy/MainActivity.java | 22 +-- .../main/java/com/example/oplogy/Maps.java | 16 +- .../com/example/oplogy/SetUpActivity.java | 176 +++++++++--------- .../example/oplogy/SubmissionActivity.java | 27 +-- .../com/example/oplogy/SubmissionAdapter.java | 11 +- .../com/example/oplogy/SubmissionStudent.java | 10 +- .../java/com/example/oplogy/TimePick.java | 11 +- 12 files changed, 147 insertions(+), 218 deletions(-) delete mode 100644 app/src/main/java/com/example/oplogy/GeoCoder.java diff --git a/app/src/main/java/com/example/oplogy/Converters.java b/app/src/main/java/com/example/oplogy/Converters.java index 945d54d..0a280f0 100644 --- a/app/src/main/java/com/example/oplogy/Converters.java +++ b/app/src/main/java/com/example/oplogy/Converters.java @@ -16,11 +16,11 @@ public class Converters { // タイムスタンプを文字列(yyyy-mm-dd,日時)に変換 @TypeConverter public static List fromTimestampList(List timestamps) { - List strings = new ArrayList<>(); + List stringsList = new ArrayList<>(); for (Timestamp timestamp : timestamps) { - strings.add(format.format(timestamp.toDate())); + stringsList.add(format.format(timestamp.toDate())); } - return strings; + return stringsList; } @TypeConverter diff --git a/app/src/main/java/com/example/oplogy/CreateUUID.java b/app/src/main/java/com/example/oplogy/CreateUUID.java index 3b0b188..84904b0 100644 --- a/app/src/main/java/com/example/oplogy/CreateUUID.java +++ b/app/src/main/java/com/example/oplogy/CreateUUID.java @@ -7,10 +7,10 @@ public class CreateUUID { public static int generateUUID(List classIdList ){ while (true){ - int uuid = (int)(Math.random() * 1000000); + int uuidInt = (int)(Math.random() * 1000000); boolean isDuplicate = false; - for(int classId : classIdList){ - if(classId==uuid){ + for(int classIdInt : classIdList){ + if(classIdInt==uuidInt){ //重複があればフラグを立て、ループを抜ける isDuplicate = true; break; @@ -20,10 +20,10 @@ public class CreateUUID { if (!isDuplicate) { //firestoreに挿入処理 InsertClassIdforFirebase insertClassIdforFirebase = new InsertClassIdforFirebase(); - insertClassIdforFirebase.insertClassId(uuid); + insertClassIdforFirebase.insertClassId(uuidInt); //テスト用 - uuid=100; - return uuid; + uuidInt=100; + return uuidInt; } } } diff --git a/app/src/main/java/com/example/oplogy/DatePick.java b/app/src/main/java/com/example/oplogy/DatePick.java index 6250664..d954a94 100644 --- a/app/src/main/java/com/example/oplogy/DatePick.java +++ b/app/src/main/java/com/example/oplogy/DatePick.java @@ -7,8 +7,8 @@ import android.widget.DatePicker; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; + import java.util.Calendar; -import java.util.Objects; public class DatePick extends DialogFragment implements DatePickerDialog.OnDateSetListener { @@ -19,16 +19,16 @@ public class DatePick extends DialogFragment implements //デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得 final Calendar c = Calendar.getInstance(); - int year = c.get(Calendar.YEAR); - int month = c.get(Calendar.MONTH); - int day = c.get(Calendar.DAY_OF_MONTH); + int yearInt = c.get(Calendar.YEAR); + int monthInt = c.get(Calendar.MONTH); + int dayInt = c.get(Calendar.DAY_OF_MONTH); - return new DatePickerDialog(requireActivity(), (DatePickerDialog.OnDateSetListener) getActivity(), year, month, day); + return new DatePickerDialog(requireActivity(), (DatePickerDialog.OnDateSetListener) getActivity(), yearInt, monthInt, dayInt); } @Override - public void onDateSet(DatePicker datePicker, int year, int month, int day) { + public void onDateSet(DatePicker datePicker, int yearInt, int monthInt, int dayInt) { } } diff --git a/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java b/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java index a88ea67..bde1e91 100644 --- a/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java +++ b/app/src/main/java/com/example/oplogy/FirestoreReception_classIdDatabase.java @@ -4,8 +4,6 @@ import android.util.Log; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; -import com.google.firebase.firestore.CollectionReference; -import com.google.firebase.firestore.DocumentSnapshot; import com.google.firebase.firestore.FirebaseFirestore; import com.google.firebase.firestore.QueryDocumentSnapshot; import com.google.firebase.firestore.QuerySnapshot; @@ -14,7 +12,6 @@ import org.checkerframework.checker.nullness.qual.NonNull; import java.util.ArrayList; import java.util.List; -import java.util.Map; public class FirestoreReception_classIdDatabase { private FirebaseFirestore db; private List classIdList= new ArrayList<>(); diff --git a/app/src/main/java/com/example/oplogy/GeoCoder.java b/app/src/main/java/com/example/oplogy/GeoCoder.java deleted file mode 100644 index ceaaa81..0000000 --- a/app/src/main/java/com/example/oplogy/GeoCoder.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.example.oplogy; - -import android.content.Context; -import android.location.Address; -import android.location.Geocoder; -import android.util.Log; - -import com.google.android.gms.maps.model.LatLng; -import com.google.firebase.Timestamp; - -import java.io.IOException; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -public class GeoCoder { - private Context context; - - public void processData(Map data, Context context) { - try { - this.context = context; - - //家庭訪問先の住所 - List address = (List) data.get("address"); - //家庭訪問の第一希望日(配列0が希望時間帯のはじめ、配列1がおわり) - List firstDay = (List) data.get("firstDay"); - //出席番号 - Long studentNumber = (Long) data.get("studentNumber"); - // 住所を緯度経度に変換 - LatLng latLng = geocodeAddress(address.get(0)); - - //デバッグ用ログ - Log.d("FirestoreReception", "address: " + address.get(0)); - Log.d("FirestoreReception", "firstDay: " + firstDay.get(0)); - Log.d("FirestoreReception", "firstDay: " + firstDay.get(1)); - Log.d("FirestoreReception", "studentNumber: " + studentNumber); - Log.d("FirestoreReception", "latLng: " + latLng); - - } catch (NullPointerException e) { - Log.e("NullPointerException", "getの中身がnull" + e); - } - } - - private LatLng geocodeAddress(String address) { - try { - Geocoder geocoder = new Geocoder(context, Locale.getDefault()); - List
addresses = geocoder.getFromLocationName(address, 1); - if (addresses != null && !addresses.isEmpty()) { - Address addressResult = addresses.get(0); - double latitude = addressResult.getLatitude(); - double longitude = addressResult.getLongitude(); - return new LatLng(latitude, longitude); - } - } catch (IOException e) { - Log.e("GeocodingException", "Error geocoding address: " + address, e); - } - return null; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index f5216f6..f32da49 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -195,12 +195,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe executor.execute(() -> { AppDatabase db = getDatabaseInstance(); SetUpTableDao setUpTableDao = db.setUpTableDao(); - int totalStudent = setUpTableDao.getTotalStudent(); - int myDataListSize = firestoreReception.getMyDataListSize(); + int totalStudentInt = setUpTableDao.getTotalStudent(); + int myDataListSizeInt = firestoreReception.getMyDataListSize(); //総生徒数と提出済みになっている生徒の数が一致するかの確認 runOnUiThread(() -> { - if (totalStudent != myDataListSize) { + if (totalStudentInt != myDataListSizeInt) { //未提出者がいることの警告ダイアログ showRouteCreationDialog(); } else { @@ -271,10 +271,10 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe // MyDataListをJSON形式に変換 Gson gson = new Gson(); - String json = gson.toJson(myDataList); + String jsonString = gson.toJson(myDataList); // JSON形式のデータを共有プリファレンスに保存 - editor.putString("myDataList", json); + editor.putString("myDataList", jsonString); editor.apply(); } @@ -320,17 +320,17 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe // 1. Roomデータベースから全生徒数を取得 AppDatabase db = getDatabaseInstance(); SetUpTableDao setUpTableDao = db.setUpTableDao(); - int totalStudent = setUpTableDao.getTotalStudent(); + int totalStudentInt = setUpTableDao.getTotalStudent(); // 2. Firestoreから生徒番号のリストを取得 - ArrayList firestoreStudentNumbers = new ArrayList<>(); + ArrayList firestoreStudentNumbersList = new ArrayList<>(); for (MyDataClass myData : myDataList) { - int studentNumber = myData.getStudentNumber(); - firestoreStudentNumbers.add(studentNumber); + int studentNumberInt = myData.getStudentNumber(); + firestoreStudentNumbersList.add(studentNumberInt); } // 3. SubmissionStudentオブジェクトのリストを作成 - for (int i = 1; i <= totalStudent; i++) { - boolean submitted = firestoreStudentNumbers.contains(i); + for (int i = 1; i <= totalStudentInt; i++) { + boolean submitted = firestoreStudentNumbersList.contains(i); submissionStudents.add(new SubmissionStudent(i, submitted)); } diff --git a/app/src/main/java/com/example/oplogy/Maps.java b/app/src/main/java/com/example/oplogy/Maps.java index 4baa164..d94af0a 100644 --- a/app/src/main/java/com/example/oplogy/Maps.java +++ b/app/src/main/java/com/example/oplogy/Maps.java @@ -44,9 +44,7 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O ImageView backMain; private GoogleMap mMap; - private MapsBinding binding; private LinearLayout locationsName; - private Spinner dateSpinner; //GoogleMapAPiで使用可能な色 private static final int[] COLORS = new int[]{Color.parseColor("#007FFF"), // HUE_AZURE Color.parseColor("#0000FF"), // HUE_BLUE @@ -60,20 +58,18 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O Color.parseColor("#FFFF00") // HUE_YELLOW }; private int colorIndex = 0; - private List latLngList = new ArrayList<>(); - private List nameList = new ArrayList<>(); - private List colorList = new ArrayList<>(); + private final List latLngList = new ArrayList<>(); + private final List nameList = new ArrayList<>(); + private final List colorList = new ArrayList<>(); - private Map dateMap = new HashMap<>(); - - private AppDatabase db = null; + private final Map dateMap = new HashMap<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // バインディングの設定 - binding = MapsBinding.inflate(getLayoutInflater()); + com.example.oplogy.databinding.MapsBinding binding = MapsBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); // マップフラグメントの設定 @@ -103,7 +99,7 @@ public class Maps extends FragmentActivity implements OnMapReadyCallback, View.O dateMap.put(formattedDayString, () -> loadMapAndNames(createlocationData(finalI), getscrollViewlData(finalI))); } - dateSpinner = findViewById(R.id.date); + Spinner dateSpinner = findViewById(R.id.date); dateSpinner.setAdapter(adapter); // スピナーのアイテム選択リスナーを設定 diff --git a/app/src/main/java/com/example/oplogy/SetUpActivity.java b/app/src/main/java/com/example/oplogy/SetUpActivity.java index d533095..4144f93 100644 --- a/app/src/main/java/com/example/oplogy/SetUpActivity.java +++ b/app/src/main/java/com/example/oplogy/SetUpActivity.java @@ -31,17 +31,17 @@ import java.util.concurrent.Executors; public class SetUpActivity extends FragmentActivity implements TimePickerDialog.OnTimeSetListener, DatePickerDialog.OnDateSetListener { - String teacherName; - String startPoint; - String firstDay; - String secondDay; - String thirdDay; - String startTime; - String endTime; - String intervalTime; - String startBreakTime; - String endBreakTime; - int totalStudent; + String teacherNameString; + String startPointString; + String firstDayString; + String secondDayString; + String thirdDayString; + String startTimeString; + String endTimeString; + String intervalTimeString; + String startBreakTimeString; + String endBreakTimeString; + int totalStudentString; private TextView setTeacherName; private TextView setStartPoint; private TextView setStartTime; @@ -49,16 +49,16 @@ public class SetUpActivity extends FragmentActivity private TextView setStartBreakTime; private TextView setEndBreakTime; private TextView setTotalStudent; - private int isDateSelected; - private int isStartTimeSelected; + private int isDateSelectedInt; + private int isStartTimeSelectedInt; - String stringYear; - String stringMonth; - String stringDayOfMonth; + String stringYearString; + String stringMonthString; + String stringDayOfMonthString; - String stringHourOfDay; - String stringMinute; + String stringHourOfDayString; + String stringMinuteString; Button setFirstDay; Button setSecondDay; @@ -74,7 +74,7 @@ public class SetUpActivity extends FragmentActivity super.onCreate(savedInstanceState); setContentView(R.layout.activity_set_up); - int classId= getIntent().getIntExtra("classId", 100000); + int classIdInt= getIntent().getIntExtra("classId", 100000); setTeacherName = findViewById(R.id.teacherName); //先生の名前 setStartPoint = findViewById(R.id.startPoint); //開始地点 @@ -110,29 +110,29 @@ public class SetUpActivity extends FragmentActivity setUp.setOnClickListener(view -> { - teacherName = setTeacherName.getText().toString(); //各変数に値を挿入 - Log.d(TAG, "Teacher Name: " + teacherName); - startPoint = setStartPoint.getText().toString(); - Log.d(TAG, "Start Point: " + startPoint); - Log.d(TAG, "First Day:" + firstDay); - Log.d(TAG, "Second Day:" + secondDay); - Log.d(TAG, "Third Day:" + thirdDay); - Log.d(TAG, "Start Time" + startTime); - Log.d(TAG, "End Time" + endTime); + teacherNameString = setTeacherName.getText().toString(); //各変数に値を挿入 + Log.d(TAG, "Teacher Name: " + teacherNameString); + startPointString = setStartPoint.getText().toString(); + Log.d(TAG, "Start Point: " + startPointString); + Log.d(TAG, "First Day:" + firstDayString); + Log.d(TAG, "Second Day:" + secondDayString); + Log.d(TAG, "Third Day:" + thirdDayString); + Log.d(TAG, "Start Time" + startTimeString); + Log.d(TAG, "End Time" + endTimeString); if (setTenMinute.isChecked()){ //ラジオボタンの状態を取得 - intervalTime = "10"; + intervalTimeString = "10"; } else if (setFifteenMinute.isChecked()) { - intervalTime = "15"; + intervalTimeString = "15"; } else if (setThirtyMinute.isChecked()) { - intervalTime = "30"; + intervalTimeString = "30"; } else { - intervalTime = "0"; + intervalTimeString = "0"; } - Log.d(TAG, "Interval Time" + intervalTime); - Log.d(TAG, "Start Break Time" + startBreakTime); - Log.d(TAG, "End Break Time" + endBreakTime); - totalStudent = Integer.parseInt(setTotalStudent.getText().toString()); //数値型に変更 - Log.d(TAG, "Total Student" + totalStudent); + Log.d(TAG, "Interval Time" + intervalTimeString); + Log.d(TAG, "Start Break Time" + startBreakTimeString); + Log.d(TAG, "End Break Time" + endBreakTimeString); + totalStudentString = Integer.parseInt(setTotalStudent.getText().toString()); //数値型に変更 + Log.d(TAG, "Total Student" + totalStudentString); Log.d(TAG, "onClick: できてるよ"); @@ -147,19 +147,19 @@ public class SetUpActivity extends FragmentActivity SetUpTableDao setUpTableDao = db.setUpTableDao(); // Roomの操作を行う SetUpTable setUpTable = new SetUpTable( - teacherName, - startPoint, - startTime, - endTime, - intervalTime, - startBreakTime, - endBreakTime, - totalStudent, - classId + teacherNameString, + startPointString, + startTimeString, + endTimeString, + intervalTimeString, + startBreakTimeString, + endBreakTimeString, + totalStudentString, + classIdInt ); // 同じ名前のエントリが存在するかどうかを確認 - SetUpTable existingSetUpTable = setUpTableDao.findByName(teacherName); + SetUpTable existingSetUpTable = setUpTableDao.findByName(teacherNameString); if (existingSetUpTable != null) { // エントリが存在する場合は、そのエントリを更新 setUpTable.setId(existingSetUpTable.getId()); // 既存のIDを設定 @@ -175,9 +175,9 @@ public class SetUpActivity extends FragmentActivity SharedPreferences sharedPreferences=getSharedPreferences("visitingDate",MODE_PRIVATE); SharedPreferences.Editor editor= sharedPreferences.edit(); - editor.putString("day1",firstDay); - editor.putString("day2",secondDay); - editor.putString("day3",thirdDay); + editor.putString("day1",firstDayString); + editor.putString("day2",secondDayString); + editor.putString("day3",thirdDayString); editor.apply(); @@ -187,37 +187,37 @@ public class SetUpActivity extends FragmentActivity }); setFirstDay.setOnClickListener(v ->{ - isDateSelected = 1; + isDateSelectedInt = 1; showDatePickerDialog(); //DatePickerの表示 }); setSecondDay.setOnClickListener(v ->{ - isDateSelected = 2; + isDateSelectedInt = 2; showDatePickerDialog(); }); setThirdDay.setOnClickListener(v ->{ - isDateSelected = 3; + isDateSelectedInt = 3; showDatePickerDialog(); }); setStartTimeButton.setOnClickListener(v -> { - isStartTimeSelected = 1; //ボタンの判別 + isStartTimeSelectedInt = 1; //ボタンの判別 showTimePickerDialog(); //TimePickerの表示 }); setEndTimeButton.setOnClickListener(v -> { - isStartTimeSelected = 2; + isStartTimeSelectedInt = 2; showTimePickerDialog(); }); setStartBreakTime.setOnClickListener(v -> { - isStartTimeSelected = 3; + isStartTimeSelectedInt = 3; showTimePickerDialog(); }); setEndBreakTime.setOnClickListener(v -> { - isStartTimeSelected = 4; + isStartTimeSelectedInt = 4; showTimePickerDialog(); }); @@ -247,25 +247,25 @@ public class SetUpActivity extends FragmentActivity // DatePickerDialogで選択された日付を処理する String str = String.format(Locale.JAPAN, "%02d/%02d", month + 1, dayOfMonth); // TextViewに表示する日付の形式を設定 - if (isDateSelected == 1) { - stringYear = String.valueOf(year); //年 - stringMonth = String.format(Locale.JAPAN, "%02d", month + 1); //月 - stringDayOfMonth = String.format(Locale.JAPAN, "%02d", dayOfMonth); //日 - firstDay = stringYear + stringMonth + stringDayOfMonth; + if (isDateSelectedInt == 1) { + stringYearString = String.valueOf(year); //年 + stringMonthString = String.format(Locale.JAPAN, "%02d", month + 1); //月 + stringDayOfMonthString = String.format(Locale.JAPAN, "%02d", dayOfMonth); //日 + firstDayString = stringYearString + stringMonthString + stringDayOfMonthString; setFirstDay.setText(str); - } else if (isDateSelected == 2) { - stringYear = String.valueOf(year); - stringMonth = String.format(Locale.JAPAN, "%02d", month + 1); - stringDayOfMonth = String.format(Locale.JAPAN, "%02d", dayOfMonth); - secondDay = stringYear + stringMonth + stringDayOfMonth; + } else if (isDateSelectedInt == 2) { + stringYearString = String.valueOf(year); + stringMonthString = String.format(Locale.JAPAN, "%02d", month + 1); + stringDayOfMonthString = String.format(Locale.JAPAN, "%02d", dayOfMonth); + secondDayString = stringYearString + stringMonthString + stringDayOfMonthString; setSecondDay.setText(str); - } else if (isDateSelected == 3) { - stringYear = String.valueOf(year); - stringMonth = String.format(Locale.JAPAN, "%02d", month + 1); - stringDayOfMonth = String.format(Locale.JAPAN, "%02d", dayOfMonth); - thirdDay = stringYear + stringMonth + stringDayOfMonth; + } else if (isDateSelectedInt == 3) { + stringYearString = String.valueOf(year); + stringMonthString = String.format(Locale.JAPAN, "%02d", month + 1); + stringDayOfMonthString = String.format(Locale.JAPAN, "%02d", dayOfMonth); + thirdDayString = stringYearString + stringMonthString + stringDayOfMonthString; setThirdDay.setText(str); } @@ -276,28 +276,28 @@ public class SetUpActivity extends FragmentActivity public void onTimeSet(TimePicker view, int hourOfDay, int minute) { String str = String.format(Locale.JAPAN, "%02d:%02d", hourOfDay, minute); // Textviewに保存する形式を設定 - if (isStartTimeSelected == 1) { - stringHourOfDay = String.format("%02d", hourOfDay); - stringMinute = String.format("%02d", minute); - startTime = stringHourOfDay + stringMinute; + if (isStartTimeSelectedInt == 1) { + stringHourOfDayString = String.format("%02d", hourOfDay); + stringMinuteString = String.format("%02d", minute); + startTimeString = stringHourOfDayString + stringMinuteString; setStartTime.setText(str); - } else if (isStartTimeSelected == 2) { - stringHourOfDay = String.format("%02d", hourOfDay); - stringMinute = String.format("%02d", minute); - endTime = stringHourOfDay + stringMinute; + } else if (isStartTimeSelectedInt == 2) { + stringHourOfDayString = String.format("%02d", hourOfDay); + stringMinuteString = String.format("%02d", minute); + endTimeString = stringHourOfDayString + stringMinuteString; setEndTime.setText(str); - } else if (isStartTimeSelected == 3) { - stringHourOfDay = String.format("%02d", hourOfDay); - stringMinute = String.format("%02d", minute); - startBreakTime =stringHourOfDay + stringMinute; + } else if (isStartTimeSelectedInt == 3) { + stringHourOfDayString = String.format("%02d", hourOfDay); + stringMinuteString = String.format("%02d", minute); + startBreakTimeString =stringHourOfDayString + stringMinuteString; setStartBreakTime.setText(" " + str + " "); - } else if (isStartTimeSelected == 4) { - stringHourOfDay = String.format("%02d", hourOfDay); - stringMinute = String.format("%02d", minute); - endBreakTime = stringHourOfDay + stringMinute; + } else if (isStartTimeSelectedInt == 4) { + stringHourOfDayString = String.format("%02d", hourOfDay); + stringMinuteString = String.format("%02d", minute); + endBreakTimeString = stringHourOfDayString + stringMinuteString; setEndBreakTime.setText(" " + str + " "); } } diff --git a/app/src/main/java/com/example/oplogy/SubmissionActivity.java b/app/src/main/java/com/example/oplogy/SubmissionActivity.java index 089c81a..2fdad78 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionActivity.java +++ b/app/src/main/java/com/example/oplogy/SubmissionActivity.java @@ -1,13 +1,11 @@ package com.example.oplogy; -import androidx.appcompat.app.AppCompatActivity; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import android.os.Bundle; import android.widget.ImageView; -import com.example.oplogy.databinding.SubmissionBinding; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; @@ -15,9 +13,8 @@ import java.util.List; public class SubmissionActivity extends AppCompatActivity { private RecyclerView recyclerView; private SubmissionAdapter submissionAdapter; - private List students = new ArrayList<>(); - ArrayList studentNumbers = new ArrayList<>(); - private int totalStudent = 10; + private final List studentsList = new ArrayList<>(); + ArrayList studentNumbersList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -26,17 +23,15 @@ public class SubmissionActivity extends AppCompatActivity { // 戻るボタンの処理 ImageView backButton = findViewById(R.id.BackMain_fromSubmission); - backButton.setOnClickListener(v -> { - finish(); - }); + backButton.setOnClickListener(v -> finish()); // インテントから提出状況の生徒の数を取得 - studentNumbers=getIntent().getIntegerArrayListExtra("submissionStudents"); + studentNumbersList=getIntent().getIntegerArrayListExtra("submissionStudents"); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); - submissionAdapter = new SubmissionAdapter(students); + submissionAdapter = new SubmissionAdapter(studentsList); recyclerView.setAdapter(submissionAdapter); // 生徒のリストを取得 @@ -44,12 +39,10 @@ public class SubmissionActivity extends AppCompatActivity { } private void fetchStudents() { // インテントから生徒のリストを取得 - ArrayList submissionStudents = getIntent().getParcelableArrayListExtra("submissionStudents"); + ArrayList submissionStudentsList = getIntent().getParcelableArrayListExtra("submissionStudents"); // 生徒のリストを反復処理し、それをRecyclerViewに表示 - for (SubmissionStudent student : submissionStudents) { - students.add(student); - } + studentsList.addAll(submissionStudentsList); // データが変更されたことをアダプターに通知 submissionAdapter.notifyDataSetChanged(); diff --git a/app/src/main/java/com/example/oplogy/SubmissionAdapter.java b/app/src/main/java/com/example/oplogy/SubmissionAdapter.java index dd121b6..3b0abe3 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionAdapter.java +++ b/app/src/main/java/com/example/oplogy/SubmissionAdapter.java @@ -5,12 +5,14 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; + +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.List; public class SubmissionAdapter extends RecyclerView.Adapter { - private List students; + private final List studentsList; public static class StudentViewHolder extends RecyclerView.ViewHolder { public TextView studentNumberTextView; @@ -25,9 +27,10 @@ public class SubmissionAdapter extends RecyclerView.Adapter students) { - this.students = students; + this.studentsList = students; } + @NonNull @Override public StudentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) @@ -37,7 +40,7 @@ public class SubmissionAdapter extends RecyclerView.Adapter