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..26ed954 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;
@@ -122,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);
}
}
@@ -222,6 +227,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..089c81a 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 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();
}
-}
\ No newline at end of file
+ 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..dd121b6
--- /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..8ca3f6c
--- /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
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
+
+
+
+
+
+
+
+
+
+