From f66a9bb8bd3cf655b0f859e5d6035f9c84ef0c71 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 24 Jun 2024 10:36:18 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=E3=83=90=E3=82=B0=E4=BF=AE=E6=AD=A3=20?= =?UTF-8?q?=E2=87=92finish()=E3=82=92=E5=89=8A=E9=99=A4=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/MainActivity.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index 64dc27a..4faf790 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -22,6 +22,9 @@ import java.util.concurrent.Executors; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ + // ダイアログの宣言 + private AlertDialog alertDialog; + // ID作成のTextViewとImageView private TextView creatUUID; private ImageView imageUuid; @@ -88,12 +91,10 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe if(view == creatUUID){ imageUuid.setImageResource(R.drawable.ischecked_uuid); showUUIDYesNoDialog();//UUIDを表示するかのダイアログ - finish(); // 画面遷移後元の状態に戻す } if(view == imageUuid){ imageUuid.setImageResource(R.drawable.ischecked_uuid); showUUIDYesNoDialog();//UUIDを表示するかのダイアログ - finish(); } // セットアップのクリック処理 if(view == setUp){ @@ -171,28 +172,30 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe } } private void showUUIDYesNoDialog() { - //ダイアログの表示 - AlertDialog.Builder builder = new AlertDialog.Builder(this); + AlertDialog.Builder builder = new AlertDialog.Builder(this); // この 'this' が問題でないか確認 builder.setTitle("クラスID"); builder.setMessage("あなたのクラスIDを表示しますか?"); - //YESのときは初回はUUIDを生成、表示 - //二回目以降は保存されたUUIDを表示 builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - String classId = CreateUUID.generateUUID();//classIDにuuidが入ってる - Toast.makeText(MainActivity.this, "クラスID: " + classId, Toast.LENGTH_SHORT).show();//テスト用 + String classId = CreateUUID.generateUUID(); + Toast.makeText(MainActivity.this, "クラスID: " + classId, Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - Log.d("DialogNO","DialogでNoが選ばれました"); + Log.d("DialogNO", "DialogでNoが選ばれました"); } }); - builder.show(); + + alertDialog = builder.create(); + alertDialog.show(); + } + + //ルート作成のダイアログ private void showRouteCreationDialog(CountDownLatch latch) { new AlertDialog.Builder(MainActivity.this) @@ -212,4 +215,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe }) .show(); } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (alertDialog != null && alertDialog.isShowing()) { + alertDialog.dismiss(); + } + } + } \ No newline at end of file From 8281474e0299de1e0888b60edb5fef3af36749c6 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 24 Jun 2024 15:05:30 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=E6=9C=80=E4=BD=8E=E9=99=90=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/MainActivity.java | 24 ++++++++++--------- .../com/example/oplogy/SetUpActivity.java | 1 - 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index 4faf790..1cc4c47 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -140,19 +140,21 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe CreateRoot createRoot = new CreateRoot(MainActivity.this); createRoot.receiveData(myDataList); latch.countDown(); + + new Thread(() -> { + try { + latch.await(); // Both tasks must call countDown() before this returns + runOnUiThread(() -> { + Intent toRoot = new Intent(MainActivity.this, Maps.class); + startActivity(toRoot); + }); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); }); - new Thread(() -> { - try { - latch.await(); // Both tasks must call countDown() before this returns - runOnUiThread(() -> { - Intent toRoot = new Intent(MainActivity.this, Maps.class); - startActivity(toRoot); - }); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }).start(); + executor.shutdown(); } diff --git a/app/src/main/java/com/example/oplogy/SetUpActivity.java b/app/src/main/java/com/example/oplogy/SetUpActivity.java index 5af3244..2dd4bdb 100644 --- a/app/src/main/java/com/example/oplogy/SetUpActivity.java +++ b/app/src/main/java/com/example/oplogy/SetUpActivity.java @@ -127,7 +127,6 @@ public class SetUpActivity extends FragmentActivity AppDatabase.class, "SetUpTable" ) - .fallbackToDestructiveMigration() .build(); SetUpTableDao setUpTableDao = db.setUpTableDao(); // Roomの操作を行う From a95c9abbbb918478440ae6c12484d096680eeff4 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 24 Jun 2024 17:52:54 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/oplogy/MainActivity.java | 94 ++++++++++--------- 1 file changed, 49 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index 1cc4c47..f3baf74 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -113,55 +113,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe // ルート作成のクリック処理 if(view == root){ imageRoot.setImageResource(R.drawable.pin); - ExecutorService executor = Executors.newSingleThreadExecutor(); + fetchDataAndCreateRoute(); - CountDownLatch latch = new CountDownLatch(2); - - executor.execute(() -> { - AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").build(); - SetUpTableDao setUpTableDao = db.setUpTableDao(); - - Log.d("MainActivity", "db" + setUpTableDao.getAll()); - - int totalStudent = setUpTableDao.getTotalStudent(); - int myDataListSize = firestoreReception.getMyDataListSize(); - - runOnUiThread(() -> { - if (totalStudent != myDataListSize) { - showRouteCreationDialog(latch); - } else { - latch.countDown(); - } - }); - }); - - executor.execute(() -> { - List myDataList = firestoreReception.getMyDataList(); - CreateRoot createRoot = new CreateRoot(MainActivity.this); - createRoot.receiveData(myDataList); - latch.countDown(); - - new Thread(() -> { - try { - latch.await(); // Both tasks must call countDown() before this returns - runOnUiThread(() -> { - Intent toRoot = new Intent(MainActivity.this, Maps.class); - startActivity(toRoot); - }); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }).start(); - }); - - - - executor.shutdown(); } if(view == imageRoot){ imageRoot.setImageResource(R.drawable.pin); - Intent toRoot = new Intent(MainActivity.this,Maps.class); - startActivity(toRoot); + fetchDataAndCreateRoute(); } // 提出状況のクリック処理 if(view == submission){ @@ -173,6 +130,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe startActivity(toSubmission); } } + //UUIDを表示するかのダイアログ private void showUUIDYesNoDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); // この 'this' が問題でないか確認 builder.setTitle("クラスID"); @@ -196,8 +154,54 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe alertDialog.show(); } + //ルート作成の非同期処理 + private void fetchDataAndCreateRoute() { + //非同期処理の開始 + ExecutorService executor = Executors.newSingleThreadExecutor(); + CountDownLatch latch = new CountDownLatch(2); + // タスク1: ローカルDBから生徒数を取得 + executor.execute(() -> { + AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").build(); + SetUpTableDao setUpTableDao = db.setUpTableDao(); + + Log.d("MainActivity", "db" + setUpTableDao.getAll()); + + int totalStudent = setUpTableDao.getTotalStudent(); + int myDataListSize = firestoreReception.getMyDataListSize(); + + runOnUiThread(() -> { + if (totalStudent != myDataListSize) { + showRouteCreationDialog(latch); + } else { + latch.countDown(); + } + }); + }); + + // タスク2: Firestoreからデータを取得 + executor.execute(() -> { + List myDataList = firestoreReception.getMyDataList(); + CreateRoot createRoot = new CreateRoot(MainActivity.this); + createRoot.receiveData(myDataList); + latch.countDown(); + }); + + new Thread(() -> { + try { + latch.await(); // Both tasks must call countDown() before this returns + runOnUiThread(() -> { + Intent toRoot = new Intent(MainActivity.this, Maps.class); + startActivity(toRoot); + }); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + + executor.shutdown(); + } //ルート作成のダイアログ private void showRouteCreationDialog(CountDownLatch latch) { new AlertDialog.Builder(MainActivity.this) From 720f4cd16ef691d2e672a6dc87e0ebfa26e2d10d Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 24 Jun 2024 18:17:42 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=E4=B8=80=E6=97=A6=E3=82=B3=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E9=80=80=E9=81=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 3 +- .../java/com/example/oplogy/MainActivity.java | 45 ++++++++++++ .../example/oplogy/SubmissionActivity.java | 72 +++++++++++++++---- .../com/example/oplogy/SubmissionAdapter.java | 62 ++++++++++++++++ .../com/example/oplogy/SubmissionStudent.java | 49 +++++++++++++ 5 files changed, 215 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/com/example/oplogy/SubmissionAdapter.java create mode 100644 app/src/main/java/com/example/oplogy/SubmissionStudent.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index ae388c2..cb865f6 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,8 +4,6 @@ diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index f3baf74..18296ea 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -15,6 +15,7 @@ import androidx.room.Room; import com.google.firebase.firestore.FirebaseFirestore; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; @@ -222,6 +223,50 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe .show(); } + + //Main + private ArrayList getSubmissionStudents() { + ArrayList submissionStudents = new ArrayList<>(); + List myDataList = firestoreReception.getMyDataList(); + + ExecutorService executor = Executors.newSingleThreadExecutor(); + CountDownLatch latch = new CountDownLatch(1); + + executor.execute(() -> { + // 1. Roomデータベースから全生徒数を取得 + AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "SetUpTable").build(); + SetUpTableDao setUpTableDao = db.setUpTableDao(); + int totalStudent = setUpTableDao.getTotalStudent(); + // 2. Firestoreから生徒番号のリストを取得 + ArrayList firestoreStudentNumbers = new ArrayList<>(); + for (MyDataClass myData : myDataList) { + int studentNumber = myData.getStudentNumber(); + firestoreStudentNumbers.add(studentNumber); + } + + // 3. SubmissionStudentオブジェクトのリストを作成 + for (int i = 1; i <= totalStudent; i++) { + boolean submitted = firestoreStudentNumbers.contains(i); + submissionStudents.add(new SubmissionStudent(i, submitted)); + } + + // 4. データベース操作が完了したことを通知 + latch.countDown(); + }); + + try { + // データベース操作が完了するのを待つ + latch.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + 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 c6e2d7f..374b0b2 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionActivity.java +++ b/app/src/main/java/com/example/oplogy/SubmissionActivity.java @@ -1,14 +1,58 @@ -package com.example.oplogy; - -import androidx.appcompat.app.AppCompatActivity; - -import android.os.Bundle; - -public class SubmissionActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.submission); - } -} \ No newline at end of file +//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 java.util.ArrayList; +//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; +// +// @Override +// protected void onCreate(Bundle savedInstanceState) { +// super.onCreate(savedInstanceState); +// setContentView(R.layout.submission); +// +// // 戻るボタンの処理 +// ImageView backButton = findViewById(R.id.BackMain_fromSubmission); +// backButton.setOnClickListener(v -> { +// finish(); +// }); +// +// +// // インテントから提出状況の生徒の数を取得 +// studentNumbers=getIntent().getIntegerArrayListExtra("submissionStudents"); +// +// recyclerView = findViewById(R.id.recyclerView); +// recyclerView.setLayoutManager(new LinearLayoutManager(this)); +// submissionAdapter = new SubmissionAdapter(students); +// recyclerView.setAdapter(submissionAdapter); +// +// // 生徒のリストを取得 +// fetchStudents(); +// } +// private void fetchStudents() { +// // インテントから生徒のリストを取得 +// ArrayList submissionStudents = getIntent().getParcelableArrayListExtra("submissionStudents"); +// +// // 生徒のリストを反復処理し、それをRecyclerViewに表示 +// for (SubmissionStudent student : submissionStudents) { +// students.add(student); +// } +// +// // データが変更されたことをアダプターに通知 +// submissionAdapter.notifyDataSetChanged(); +// } +//} +// diff --git a/app/src/main/java/com/example/oplogy/SubmissionAdapter.java b/app/src/main/java/com/example/oplogy/SubmissionAdapter.java new file mode 100644 index 0000000..be5c0c4 --- /dev/null +++ b/app/src/main/java/com/example/oplogy/SubmissionAdapter.java @@ -0,0 +1,62 @@ +//package com.example.oplogy; +// +//import android.graphics.Color; +//import android.view.LayoutInflater; +//import android.view.View; +//import android.view.ViewGroup; +//import android.widget.TextView; +//import androidx.recyclerview.widget.RecyclerView; +//import java.util.List; +// +//public class SubmissionAdapter extends RecyclerView.Adapter { +// +// private List students; +// +// 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.students = students; +// } +// +// @Override +// public StudentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { +// View view = LayoutInflater.from(parent.getContext()) +// .inflate(R.layout.row_submission, parent, false); +// return new StudentViewHolder(view); +// } +// +// @Override +// public void onBindViewHolder(StudentViewHolder holder, int position) { +// SubmissionStudent student = students.get(position); +// holder.studentNumberTextView.setText(String.valueOf(student.getStudentNumber())); +// // 提出済みかどうかで表示を変える +// if (student.isSubmitted()) { +// holder.statusTextView.setText("提出済み"); +// holder.statusTextView.setBackgroundColor(Color.BLACK); +// holder.statusTextView.setTextColor(Color.WHITE); +// holder.studentNumberTextView.setBackgroundColor(Color.BLACK); +// holder.studentNumberTextView.setTextColor(Color.WHITE); +// } else { +// holder.statusTextView.setText("未提出"); +// holder.statusTextView.setBackgroundColor(Color.RED); +// holder.statusTextView.setTextColor(Color.WHITE); +// holder.studentNumberTextView.setBackgroundColor(Color.RED); +// holder.studentNumberTextView.setTextColor(Color.WHITE); +// } +// } +// +// @Override +// public int getItemCount() { +// return students.size(); +// } +//} diff --git a/app/src/main/java/com/example/oplogy/SubmissionStudent.java b/app/src/main/java/com/example/oplogy/SubmissionStudent.java new file mode 100644 index 0000000..21041f7 --- /dev/null +++ b/app/src/main/java/com/example/oplogy/SubmissionStudent.java @@ -0,0 +1,49 @@ +//package com.example.oplogy; +//import android.os.Parcel; +//import android.os.Parcelable; +// +//public class SubmissionStudent implements Parcelable { +// private int studentNumber; +// private boolean submitted; +// +// public SubmissionStudent(int studentNumber, boolean submitted) { +// this.studentNumber = studentNumber; +// this.submitted = submitted; +// } +// +// protected SubmissionStudent(Parcel in) { +// studentNumber = in.readInt(); +// submitted = in.readByte() != 0; +// } +// +// public static final Creator CREATOR = new Creator() { +// @Override +// public SubmissionStudent createFromParcel(Parcel in) { +// return new SubmissionStudent(in); +// } +// +// @Override +// public SubmissionStudent[] newArray(int size) { +// return new SubmissionStudent[size]; +// } +// }; +// +// public int getStudentNumber() { +// return studentNumber; +// } +// +// public boolean isSubmitted() { +// return submitted; +// } +// +// @Override +// public int describeContents() { +// return 0; +// } +// +// @Override +// public void writeToParcel(Parcel parcel, int i) { +// parcel.writeInt(studentNumber); +// parcel.writeByte((byte) (submitted ? 1 : 0)); +// } +//} \ No newline at end of file From bafc7df037a52f79259a348aecd5e69502ced148 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 24 Jun 2024 18:42:13 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=E4=B8=80=E6=97=A6=E3=82=B3=E3=83=A1?= =?UTF-8?q?=E3=83=B3=E3=83=88=E9=80=80=E9=81=BFpart2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/oplogy/SubmissionActivity.java | 116 ++++++++-------- .../com/example/oplogy/SubmissionAdapter.java | 124 +++++++++--------- .../com/example/oplogy/SubmissionStudent.java | 98 +++++++------- app/src/main/res/layout/row_submission.xml | 31 +++++ app/src/main/res/layout/submission.xml | 38 +++++- 5 files changed, 236 insertions(+), 171 deletions(-) create mode 100644 app/src/main/res/layout/row_submission.xml diff --git a/app/src/main/java/com/example/oplogy/SubmissionActivity.java b/app/src/main/java/com/example/oplogy/SubmissionActivity.java index 374b0b2..089c81a 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionActivity.java +++ b/app/src/main/java/com/example/oplogy/SubmissionActivity.java @@ -1,58 +1,58 @@ -//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 java.util.ArrayList; -//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; -// -// @Override -// protected void onCreate(Bundle savedInstanceState) { -// super.onCreate(savedInstanceState); -// setContentView(R.layout.submission); -// -// // 戻るボタンの処理 -// ImageView backButton = findViewById(R.id.BackMain_fromSubmission); -// backButton.setOnClickListener(v -> { -// finish(); -// }); -// -// -// // インテントから提出状況の生徒の数を取得 -// studentNumbers=getIntent().getIntegerArrayListExtra("submissionStudents"); -// -// recyclerView = findViewById(R.id.recyclerView); -// recyclerView.setLayoutManager(new LinearLayoutManager(this)); -// submissionAdapter = new SubmissionAdapter(students); -// recyclerView.setAdapter(submissionAdapter); -// -// // 生徒のリストを取得 -// fetchStudents(); -// } -// private void fetchStudents() { -// // インテントから生徒のリストを取得 -// ArrayList submissionStudents = getIntent().getParcelableArrayListExtra("submissionStudents"); -// -// // 生徒のリストを反復処理し、それをRecyclerViewに表示 -// for (SubmissionStudent student : submissionStudents) { -// students.add(student); -// } -// -// // データが変更されたことをアダプターに通知 -// submissionAdapter.notifyDataSetChanged(); -// } -//} -// +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 java.util.ArrayList; +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; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.submission); + + // 戻るボタンの処理 + ImageView backButton = findViewById(R.id.BackMain_fromSubmission); + backButton.setOnClickListener(v -> { + finish(); + }); + + + // インテントから提出状況の生徒の数を取得 + studentNumbers=getIntent().getIntegerArrayListExtra("submissionStudents"); + + recyclerView = findViewById(R.id.recyclerView); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + submissionAdapter = new SubmissionAdapter(students); + recyclerView.setAdapter(submissionAdapter); + + // 生徒のリストを取得 + fetchStudents(); + } + private void fetchStudents() { + // インテントから生徒のリストを取得 + ArrayList submissionStudents = getIntent().getParcelableArrayListExtra("submissionStudents"); + + // 生徒のリストを反復処理し、それをRecyclerViewに表示 + for (SubmissionStudent student : submissionStudents) { + students.add(student); + } + + // データが変更されたことをアダプターに通知 + 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 be5c0c4..dd121b6 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionAdapter.java +++ b/app/src/main/java/com/example/oplogy/SubmissionAdapter.java @@ -1,62 +1,62 @@ -//package com.example.oplogy; -// -//import android.graphics.Color; -//import android.view.LayoutInflater; -//import android.view.View; -//import android.view.ViewGroup; -//import android.widget.TextView; -//import androidx.recyclerview.widget.RecyclerView; -//import java.util.List; -// -//public class SubmissionAdapter extends RecyclerView.Adapter { -// -// private List students; -// -// 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.students = students; -// } -// -// @Override -// public StudentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { -// View view = LayoutInflater.from(parent.getContext()) -// .inflate(R.layout.row_submission, parent, false); -// return new StudentViewHolder(view); -// } -// -// @Override -// public void onBindViewHolder(StudentViewHolder holder, int position) { -// SubmissionStudent student = students.get(position); -// holder.studentNumberTextView.setText(String.valueOf(student.getStudentNumber())); -// // 提出済みかどうかで表示を変える -// if (student.isSubmitted()) { -// holder.statusTextView.setText("提出済み"); -// holder.statusTextView.setBackgroundColor(Color.BLACK); -// holder.statusTextView.setTextColor(Color.WHITE); -// holder.studentNumberTextView.setBackgroundColor(Color.BLACK); -// holder.studentNumberTextView.setTextColor(Color.WHITE); -// } else { -// holder.statusTextView.setText("未提出"); -// holder.statusTextView.setBackgroundColor(Color.RED); -// holder.statusTextView.setTextColor(Color.WHITE); -// holder.studentNumberTextView.setBackgroundColor(Color.RED); -// holder.studentNumberTextView.setTextColor(Color.WHITE); -// } -// } -// -// @Override -// public int getItemCount() { -// return students.size(); -// } -//} +package com.example.oplogy; + +import android.graphics.Color; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import androidx.recyclerview.widget.RecyclerView; +import java.util.List; + +public class SubmissionAdapter extends RecyclerView.Adapter { + + private List students; + + 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.students = students; + } + + @Override + public StudentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.row_submission, parent, false); + return new StudentViewHolder(view); + } + + @Override + public void onBindViewHolder(StudentViewHolder holder, int position) { + SubmissionStudent student = students.get(position); + holder.studentNumberTextView.setText(String.valueOf(student.getStudentNumber())); + // 提出済みかどうかで表示を変える + if (student.isSubmitted()) { + holder.statusTextView.setText("提出済み"); + holder.statusTextView.setBackgroundColor(Color.BLACK); + holder.statusTextView.setTextColor(Color.WHITE); + holder.studentNumberTextView.setBackgroundColor(Color.BLACK); + holder.studentNumberTextView.setTextColor(Color.WHITE); + } else { + holder.statusTextView.setText("未提出"); + holder.statusTextView.setBackgroundColor(Color.RED); + holder.statusTextView.setTextColor(Color.WHITE); + holder.studentNumberTextView.setBackgroundColor(Color.RED); + holder.studentNumberTextView.setTextColor(Color.WHITE); + } + } + + @Override + public int getItemCount() { + return students.size(); + } +} diff --git a/app/src/main/java/com/example/oplogy/SubmissionStudent.java b/app/src/main/java/com/example/oplogy/SubmissionStudent.java index 21041f7..8ca3f6c 100644 --- a/app/src/main/java/com/example/oplogy/SubmissionStudent.java +++ b/app/src/main/java/com/example/oplogy/SubmissionStudent.java @@ -1,49 +1,49 @@ -//package com.example.oplogy; -//import android.os.Parcel; -//import android.os.Parcelable; -// -//public class SubmissionStudent implements Parcelable { -// private int studentNumber; -// private boolean submitted; -// -// public SubmissionStudent(int studentNumber, boolean submitted) { -// this.studentNumber = studentNumber; -// this.submitted = submitted; -// } -// -// protected SubmissionStudent(Parcel in) { -// studentNumber = in.readInt(); -// submitted = in.readByte() != 0; -// } -// -// public static final Creator CREATOR = new Creator() { -// @Override -// public SubmissionStudent createFromParcel(Parcel in) { -// return new SubmissionStudent(in); -// } -// -// @Override -// public SubmissionStudent[] newArray(int size) { -// return new SubmissionStudent[size]; -// } -// }; -// -// public int getStudentNumber() { -// return studentNumber; -// } -// -// public boolean isSubmitted() { -// return submitted; -// } -// -// @Override -// public int describeContents() { -// return 0; -// } -// -// @Override -// public void writeToParcel(Parcel parcel, int i) { -// parcel.writeInt(studentNumber); -// parcel.writeByte((byte) (submitted ? 1 : 0)); -// } -//} \ No newline at end of file +package com.example.oplogy; +import android.os.Parcel; +import android.os.Parcelable; + +public class SubmissionStudent implements Parcelable { + private int studentNumber; + private boolean submitted; + + public SubmissionStudent(int studentNumber, boolean submitted) { + this.studentNumber = studentNumber; + this.submitted = submitted; + } + + protected SubmissionStudent(Parcel in) { + studentNumber = in.readInt(); + submitted = in.readByte() != 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public SubmissionStudent createFromParcel(Parcel in) { + return new SubmissionStudent(in); + } + + @Override + public SubmissionStudent[] newArray(int size) { + return new SubmissionStudent[size]; + } + }; + + public int getStudentNumber() { + return studentNumber; + } + + public boolean isSubmitted() { + return submitted; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel parcel, int i) { + parcel.writeInt(studentNumber); + parcel.writeByte((byte) (submitted ? 1 : 0)); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/row_submission.xml b/app/src/main/res/layout/row_submission.xml new file mode 100644 index 0000000..9298d4f --- /dev/null +++ b/app/src/main/res/layout/row_submission.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/submission.xml b/app/src/main/res/layout/submission.xml index d9cbc15..b65b6f5 100644 --- a/app/src/main/res/layout/submission.xml +++ b/app/src/main/res/layout/submission.xml @@ -1,9 +1,43 @@ - - \ No newline at end of file + + + + + + + + + + From f658c3c32efdd6d0f651a108ef606a36513f7a89 Mon Sep 17 00:00:00 2001 From: nemukemo Date: Mon, 24 Jun 2024 18:48:30 +0900 Subject: [PATCH 6/6] =?UTF-8?q?submission=E3=81=AE=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/example/oplogy/MainActivity.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java index 18296ea..26ed954 100644 --- a/app/src/main/java/com/example/oplogy/MainActivity.java +++ b/app/src/main/java/com/example/oplogy/MainActivity.java @@ -123,11 +123,15 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe } // 提出状況のクリック処理 if(view == submission){ - Intent toSubmission = new Intent(MainActivity.this,SubmissionActivity.class); + ArrayList submissionStudents = getSubmissionStudents(); + Intent toSubmission = new Intent(MainActivity.this, SubmissionActivity.class); + toSubmission.putParcelableArrayListExtra("submissionStudents", submissionStudents); startActivity(toSubmission); } if(view == imageSubmission){ - Intent toSubmission = new Intent(MainActivity.this,SubmissionActivity.class); + ArrayList submissionStudents = getSubmissionStudents(); + Intent toSubmission = new Intent(MainActivity.this, SubmissionActivity.class); + toSubmission.putParcelableArrayListExtra("submissionStudents", submissionStudents); startActivity(toSubmission); } }