diff --git a/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ChildListAdapter2.java b/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ChildListAdapter2.java new file mode 100644 index 0000000..cc21295 --- /dev/null +++ b/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ChildListAdapter2.java @@ -0,0 +1,43 @@ +package one.nem.kidshift.feature.parent; + +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; + +import one.nem.kidshift.model.ChildModel; + +public class ChildListAdapter2 extends RecyclerView.Adapter { + + private final List childDataList; + + ChildListAdapter2(List childDataList){this.childDataList = childDataList;} + + static class MainViewHolder extends RecyclerView.ViewHolder{ + TextView actchildname; + + MainViewHolder(@NonNull View itemView){ + super(itemView); + actchildname = itemView.findViewById(R.id.actchildname); + } + } + + @NonNull + @Override + public MainViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){ + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_act_child_name,parent,false); + return new MainViewHolder(view); + } + + public void onBindViewHolder(@NonNull MainViewHolder holder,int position){ + ChildModel childData = this.childDataList.get(position); + holder.actchildname.setText(childData.getName()); + } + + public int getItemCount(){ return childDataList.size();} +} diff --git a/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentAdapter.java b/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentAdapter.java index a1e7ce4..7c7dbd3 100644 --- a/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentAdapter.java +++ b/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentAdapter.java @@ -3,6 +3,7 @@ package one.nem.kidshift.feature.parent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.TextView; import androidx.annotation.NonNull; @@ -15,20 +16,37 @@ import one.nem.kidshift.model.tasks.TaskItemModel; public class ParentAdapter extends RecyclerView.Adapter { - private final List taskDataList; + public interface CompleteButtonClickedCallback { + void onClicked(String taskId); + } - ParentAdapter(List taskDataList) { this.taskDataList = taskDataList; } + private List taskDataList; + private CompleteButtonClickedCallback callback; +// ParentAdapter(List taskDataList) { this.taskDataList = taskDataList; } + ParentAdapter(){ + + } + + public void setTaskDataList(List taskDataList){ + this.taskDataList = taskDataList; + } + + public void setCallback(CompleteButtonClickedCallback callback) { + this.callback = callback; + } static class MainViewHolder extends RecyclerView.ViewHolder{ TextView taskTitle; TextView taskContents; + Button completedButton; MainViewHolder(@NonNull View itemView){ super(itemView); taskTitle = itemView.findViewById(R.id.task_title_text_view); taskContents = itemView.findViewById(R.id.task_contents_text_view); + completedButton = itemView.findViewById(R.id.actbutton); } } @@ -43,10 +61,13 @@ public class ParentAdapter extends RecyclerView.Adapter { + this.callback.onClicked(taskData.getId()); + }); } @Override public int getItemCount(){ - return taskDataList.size(); + return taskDataList == null ? 0 : taskDataList.size(); } } diff --git a/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentMainFragment.java b/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentMainFragment.java index 3497122..3b6faa7 100644 --- a/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentMainFragment.java +++ b/feature/parent/src/main/java/one/nem/kidshift/feature/parent/ParentMainFragment.java @@ -13,6 +13,8 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; +import android.widget.Toast; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -25,20 +27,15 @@ import dagger.hilt.android.AndroidEntryPoint; import one.nem.kidshift.data.ChildData; import one.nem.kidshift.data.TaskData; import one.nem.kidshift.model.ChildModel; -import one.nem.kidshift.model.callback.ChildModelCallback; import one.nem.kidshift.model.callback.TaskItemModelCallback; import one.nem.kidshift.model.tasks.TaskItemModel; import one.nem.kidshift.utils.KSLogger; -import one.nem.kidshift.utils.factory.KSLoggerFactory; @AndroidEntryPoint public class ParentMainFragment extends Fragment { @Inject - KSLoggerFactory loggerFactory; - - private KSLogger ksLogger; - + KSLogger ksLogger; @Inject TaskData taskData; @Inject @@ -47,8 +44,11 @@ public class ParentMainFragment extends Fragment { ParentAdapter parentAdapter; SwipeRefreshLayout swipeRefreshLayout; + + @SuppressLint("DatasetChange") private void updateTaskInfo(){ + swipeRefreshLayout.setRefreshing(true); taskData.getTasks(new TaskItemModelCallback() { @Override public void onUnchanged() { @@ -65,6 +65,7 @@ public class ParentMainFragment extends Fragment { } }).thenAccept(taskItemModel -> { + parentAdapter.setTaskDataList(taskItemModel); requireActivity().runOnUiThread(()->{ parentAdapter.notifyDataSetChanged(); }); @@ -77,45 +78,7 @@ public class ParentMainFragment extends Fragment { // Required empty public constructor } - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ksLogger = loggerFactory.create("ParentMain"); - } - - private void dataRefresh(){ - swipeRefreshLayout = requireView().findViewById(R.id.swipe_refresh_layout); - swipeRefreshLayout.setRefreshing(true); - - RecyclerView recyclerView =requireView().findViewById(R.id.main_recycle_view); - - recyclerView.setHasFixedSize(true); - - RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext()); - recyclerView.setLayoutManager(layoutManager); - - List task = taskData.getTasks(new TaskItemModelCallback() { - @Override - public void onUnchanged() { - // TODO - } - - @Override - public void onUpdated(List taskItem) { - // TODO - } - - @Override - public void onFailed(String message) { - // TODO - } - }).join(); - - RecyclerView.Adapter mainAdapter = new ParentAdapter(task); - recyclerView.setAdapter(mainAdapter); - - swipeRefreshLayout.setRefreshing(false); - } + @SuppressLint("MissingInflatedId") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -124,6 +87,58 @@ public class ParentMainFragment extends Fragment { //タスク一覧表示 View view = inflater.inflate(R.layout.fragment_parent_main, container, false); + swipeRefreshLayout = view.findViewById(R.id.swipe_refresh_layout); + + RecyclerView recyclerView = view.findViewById(R.id.main_recycle_view); + + recyclerView.setHasFixedSize(true); + + RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext()); + recyclerView.setLayoutManager(layoutManager); + + parentAdapter = new ParentAdapter(); + parentAdapter.setCallback(new ParentAdapter.CompleteButtonClickedCallback() { + @Override + public void onClicked(String taskId) { + Toast.makeText(requireContext(), "TaskID: " + taskId, Toast.LENGTH_LONG).show(); + //お手伝い完了処理 + LayoutInflater inflater2 = requireActivity().getLayoutInflater(); + View view2 = inflater2.inflate(R.layout.act_child_select_dialog,null); + + //子供一覧表示 + RecyclerView recyclerView2 = view2.findViewById(R.id.act_recycle_view); + + recyclerView2.setHasFixedSize(true); + + RecyclerView.LayoutManager layoutManager2 = new LinearLayoutManager(getContext()); + recyclerView2.setLayoutManager(layoutManager2); + + List child1 = childData.getChildList().join(); + + RecyclerView.Adapter mainAdapter2 = new ChildListAdapter2(child1); + recyclerView2.setAdapter(mainAdapter2); + + MaterialAlertDialogBuilder builder1 = new MaterialAlertDialogBuilder(getContext()); + builder1.setTitle("お手伝いをしたお子様の名前を選択してください") + .setView(view2) + .setNeutralButton("閉じる",null); + builder1.create().show(); + } + }); + recyclerView.setAdapter(parentAdapter); + updateTaskInfo(); + + //Pull-to-refresh(スワイプで更新) + try { + + swipeRefreshLayout.setOnRefreshListener(() ->{ + updateTaskInfo(); + }); + } catch (Exception e){ + } + + + //お手伝い追加ダイアログ LayoutInflater inflater1 = requireActivity().getLayoutInflater(); View view1 = inflater1.inflate(R.layout.add_task_list_dialog,null); @@ -136,23 +151,10 @@ public class ParentMainFragment extends Fragment { RecyclerView.LayoutManager layoutManager1 = new LinearLayoutManager(getContext()); recyclerView1.setLayoutManager(layoutManager1); + + ksLogger.debug("子供一覧取得開始"); - List child = childData.getChildList(new ChildModelCallback() { - @Override - public void onUnchanged() { - - } - - @Override - public void onUpdated(List childModelList) { - - } - - @Override - public void onFailed(String message) { - - } - }).join(); + List child = childData.getChildList().join(); ksLogger.debug("子供一覧取得完了"); RecyclerView.Adapter mainAdapter1 = new ChildListAdapter(child); @@ -176,10 +178,6 @@ public class ParentMainFragment extends Fragment { public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // Do something... - SwipeRefreshLayout swipeRefreshLayout = view.findViewById(R.id.swipe_refresh_layout); - swipeRefreshLayout.setOnRefreshListener(()->{ - dataRefresh(); - }); } } \ No newline at end of file diff --git a/feature/parent/src/main/res/layout/act_child_select_dialog.xml b/feature/parent/src/main/res/layout/act_child_select_dialog.xml new file mode 100644 index 0000000..4cd5b30 --- /dev/null +++ b/feature/parent/src/main/res/layout/act_child_select_dialog.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/feature/parent/src/main/res/layout/list_act_child_name.xml b/feature/parent/src/main/res/layout/list_act_child_name.xml new file mode 100644 index 0000000..2e76cf3 --- /dev/null +++ b/feature/parent/src/main/res/layout/list_act_child_name.xml @@ -0,0 +1,31 @@ + + + + + +