From bb4912f123a085af7570e4628d077e06bcc6fca5 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Wed, 17 Jul 2024 12:23:41 +0900 Subject: [PATCH] =?UTF-8?q?uuid:=E5=80=A4=E3=82=92=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AB=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E4=B8=AD=20main:=E5=90=84=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E3=81=8C=E4=BD=95=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=82=8B=E3=81=8B=E3=81=AE=E3=82=B3=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E8=BF=BD=E5=8A=A0=20SubmissionActivity:null?= =?UTF-8?q?=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E3=81=A8=E8=AC=8E=E3=81=AE?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E5=89=8A=E9=99=A4=20SubmissionAdapt?= =?UTF-8?q?er:=E8=89=B2=E3=81=AE=E3=82=BB=E3=83=83=E3=83=88=E3=81=AA?= =?UTF-8?q?=E3=81=A9=E3=82=92=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E5=8C=96?= =?UTF-8?q?=20submission.xml:recyclerview=E3=81=8C=E3=83=9E=E3=83=83?= =?UTF-8?q?=E3=83=81=E3=83=A7=E3=83=9A=E3=82=A2=E3=83=AC=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=81=A0=E3=81=A3=E3=81=9F=E3=81=8B=E3=82=89-1=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E3=83=95=E3=83=AC=E3=83=B3=E3=82=BA=E3=81=A7?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=80=82=E3=81=A6=E3=81=B8=E3=81=BA=E3=82=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/CreateUUID.java | 2 +- .../java/com/example/oplogy/MainActivity.java | 58 ++++++++++-------- .../example/oplogy/SubmissionActivity.java | 22 ++++--- .../com/example/oplogy/SubmissionAdapter.java | 59 +++++++++++-------- app/src/main/res/layout/row_submission.xml | 11 ++-- app/src/main/res/layout/submission.xml | 11 ++-- 6 files changed, 90 insertions(+), 73 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/CreateUUID.java b/app/src/main/java/com/example/oplogy/CreateUUID.java index 08686e6..c9bbcc8 100644 --- a/app/src/main/java/com/example/oplogy/CreateUUID.java +++ b/app/src/main/java/com/example/oplogy/CreateUUID.java @@ -22,7 +22,7 @@ public class CreateUUID { InsertClassIdforFirebase insertClassIdforFirebase = new InsertClassIdforFirebase(); insertClassIdforFirebase.insertClassId(uuidInt); //テスト用 - uuidInt = 100; + uuidInt = 328071; return uuidInt; } } diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index f3c11b0..045ba75 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -343,6 +343,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe // `fetchDataAndCreateRoute`メソッド内では、shutdownを呼び出さない } + // 未提出者がいることの警告ダイアログ private void showRouteCreationDialog() { new AlertDialog.Builder(MainActivity.this) .setTitle("警告") @@ -359,6 +360,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe .show(); } +// ルート作成の非同期処理 + private void createRoute(ExecutorService executor) { // ProgressDialogを作成 ProgressDialog progressDialog = new ProgressDialog(MainActivity.this); @@ -414,7 +417,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe }); } - + // 作成したルートを(Mapに渡せるように)保存するメソッド private void saveMyDataList(List myDataList) { // 共有プリファレンスのインスタンスを取得 SharedPreferences sharedPreferences = getSharedPreferences("MyDataList", MODE_PRIVATE); @@ -429,6 +432,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe editor.apply(); } + // 保護者の重複による警告ダイアログ private void showErrorDialog(List myDataList) { List studentNumbers = new ArrayList<>(); for (MyDataClass data : myDataList) { @@ -462,14 +466,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe .show(); } - + // データベースのインスタンスを取得するメソッド private AppDatabase getDatabaseInstance() { return Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").build(); } //提出状況の取得 - private ArrayList getSubmissionStudents() { + public ArrayList getSubmissionStudents() { ArrayList submissionStudents = new ArrayList<>(); List myDataList = firestoreReception.getMyDataList(); @@ -477,40 +481,44 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe CountDownLatch latch = new CountDownLatch(1); executor.execute(() -> { - // 1. Roomデータベースから全生徒数を取得 - AppDatabase db = getDatabaseInstance(); - SetUpTableDao setUpTableDao = db.setUpTableDao(); - int totalStudentInt = setUpTableDao.getTotalStudent(); - // 2. Firestoreから生徒番号のリストを取得 - ArrayList firestoreStudentNumbersList = new ArrayList<>(); - for (MyDataClass myData : myDataList) { - int studentNumberInt = myData.getStudentNumber(); - firestoreStudentNumbersList.add(studentNumberInt); - } + try { + // 1. Roomデータベースから全生徒数を取得 + AppDatabase db = getDatabaseInstance(); + SetUpTableDao setUpTableDao = db.setUpTableDao(); + int totalStudentInt = setUpTableDao.getTotalStudent(); - // 3. SubmissionStudentオブジェクトのリストを作成 - for (int i = 1; i <= totalStudentInt; i++) { - boolean submitted = firestoreStudentNumbersList.contains(i); - submissionStudents.add(new SubmissionStudent(i, submitted)); - } + // 2. Firestoreから生徒番号のリストを取得 + ArrayList firestoreStudentNumbersList = new ArrayList<>(); + for (MyDataClass myData : myDataList) { + int studentNumberInt = myData.getStudentNumber(); + firestoreStudentNumbersList.add(studentNumberInt); + } - // 4. データベース操作が完了したことを通知 - latch.countDown(); + // 3. SubmissionStudentオブジェクトのリストを作成 + for (int i = 1; i <= totalStudentInt; i++) { + boolean submitted = firestoreStudentNumbersList.contains(i); + submissionStudents.add(new SubmissionStudent(i, submitted)); + } + } catch (Exception e) { + e.printStackTrace(); // ログにエラーメッセージを出力 + } finally { + // 4. データベース操作が完了したことを通知 + latch.countDown(); + } }); try { - // データベース操作が完了するのを待つ - latch.await(); + latch.await(); // 非同期処理が完了するまで待機 } catch (InterruptedException e) { e.printStackTrace(); + } finally { + executor.shutdown(); // ExecutorServiceをシャットダウン } - executor.shutdown(); - - // SubmissionStudentオブジェクトのリストを返す return submissionStudents; } + @Override protected void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/example/oplogy/SubmissionActivity.java b/app/src/main/java/com/example/oplogy/SubmissionActivity.java index 2fdad78..3d2a1e0 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionActivity.java +++ b/app/src/main/java/com/example/oplogy/SubmissionActivity.java @@ -1,7 +1,9 @@ package com.example.oplogy; import android.os.Bundle; +import android.util.Log; import android.widget.ImageView; +import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; @@ -11,10 +13,9 @@ import java.util.ArrayList; import java.util.List; public class SubmissionActivity extends AppCompatActivity { + private final List studentsList = new ArrayList<>(); private RecyclerView recyclerView; private SubmissionAdapter submissionAdapter; - private final List studentsList = new ArrayList<>(); - ArrayList studentNumbersList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -25,10 +26,7 @@ public class SubmissionActivity extends AppCompatActivity { ImageView backButton = findViewById(R.id.BackMain_fromSubmission); backButton.setOnClickListener(v -> finish()); - - // インテントから提出状況の生徒の数を取得 - studentNumbersList=getIntent().getIntegerArrayListExtra("submissionStudents"); - + // RecyclerViewとアダプターの初期化 recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); submissionAdapter = new SubmissionAdapter(studentsList); @@ -37,15 +35,21 @@ public class SubmissionActivity extends AppCompatActivity { // 生徒のリストを取得 fetchStudents(); } + private void fetchStudents() { // インテントから生徒のリストを取得 ArrayList submissionStudentsList = getIntent().getParcelableArrayListExtra("submissionStudents"); - // 生徒のリストを反復処理し、それをRecyclerViewに表示 - studentsList.addAll(submissionStudentsList); + if (submissionStudentsList != null) { + Log.d("SubmissionActivity", "Size of submissionStudentsList: " + submissionStudentsList.size()); + + studentsList.addAll(submissionStudentsList); + } else { + Log.e("SubmissionActivity", "submissionStudentsList is null"); + Toast.makeText(this, "生徒のリストが取得できませんでした", Toast.LENGTH_SHORT).show(); + } // データが変更されたことをアダプターに通知 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 3b0abe3..5fd117e 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionAdapter.java +++ b/app/src/main/java/com/example/oplogy/SubmissionAdapter.java @@ -8,24 +8,13 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; + import java.util.List; public class SubmissionAdapter extends RecyclerView.Adapter { private final List studentsList; - public static class StudentViewHolder extends RecyclerView.ViewHolder { - public TextView studentNumberTextView; - public TextView statusTextView; - - public StudentViewHolder(View view) { - super(view); - // レイアウトファイルのTextViewを取得 - studentNumberTextView = view.findViewById(R.id.studentNumberTextView); - statusTextView = view.findViewById(R.id.statusTextView); - } - } - public SubmissionAdapter(List students) { this.studentsList = students; } @@ -42,24 +31,42 @@ public class SubmissionAdapter extends RecyclerView.Adapter - - \ No newline at end of file + android:text="提出状況" + android:textColor="@android:color/black" + android:textSize="36sp" /> + diff --git a/app/src/main/res/layout/submission.xml b/app/src/main/res/layout/submission.xml index b65b6f5..5b71ea3 100644 --- a/app/src/main/res/layout/submission.xml +++ b/app/src/main/res/layout/submission.xml @@ -1,6 +1,5 @@ + android:textSize="40dp" /> + android:layout_height="0dp" + android:layout_weight="9" + android:scrollbars="vertical" /> -- 2.45.1