設定のLoginDialogやりました

This commit is contained in:
yamamoto 2024-07-03 16:16:16 +09:00
parent 03eec20fda
commit 0474b4455b
4 changed files with 102 additions and 10 deletions

View File

@ -122,7 +122,7 @@ public interface KidShiftApiService {
* @param id 子供ID * @param id 子供ID
* @return ChildLoginCodeResponse * @return ChildLoginCodeResponse
*/ */
@POST("/parent/child/{id}/login") @GET("/parent/child/{id}/login")
@Headers(AuthorizationInterceptor.HEADER_PLACEHOLDER) @Headers(AuthorizationInterceptor.HEADER_PLACEHOLDER)
Call<ChildLoginCodeResponse> issueLoginCode(@Path("id") String id); Call<ChildLoginCodeResponse> issueLoginCode(@Path("id") String id);

View File

@ -4,6 +4,7 @@ import android.inputmethodservice.Keyboard;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -15,8 +16,14 @@ import one.nem.kidshift.model.ChildModel;
public class SettingAdapter extends RecyclerView.Adapter<SettingAdapter.MainViewHolder> { public class SettingAdapter extends RecyclerView.Adapter<SettingAdapter.MainViewHolder> {
public interface LoginButtonCallback {
void onLoginButtonClicked(String childId);
}
private List<ChildModel> childDataList; private List<ChildModel> childDataList;
private LoginButtonCallback loginButtonCallback;
SettingAdapter() { SettingAdapter() {
} }
@ -25,13 +32,19 @@ public class SettingAdapter extends RecyclerView.Adapter<SettingAdapter.MainView
this.childDataList = childDataList; this.childDataList = childDataList;
} }
public void setLoginButtonCallback(LoginButtonCallback loginButtonCallback) {
this.loginButtonCallback = loginButtonCallback;
}
static class MainViewHolder extends RecyclerView.ViewHolder{ static class MainViewHolder extends RecyclerView.ViewHolder{
TextView childname; TextView childname;
Button loginButton;
MainViewHolder(@NonNull View itemView) { MainViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
childname = itemView.findViewById(R.id.childname); childname = itemView.findViewById(R.id.childname);
loginButton = itemView.findViewById(R.id.loginButton);
} }
} }
@ -46,6 +59,11 @@ public class SettingAdapter extends RecyclerView.Adapter<SettingAdapter.MainView
public void onBindViewHolder(@NonNull MainViewHolder holder, int position){ public void onBindViewHolder(@NonNull MainViewHolder holder, int position){
ChildModel childData = this.childDataList.get(position); ChildModel childData = this.childDataList.get(position);
holder.childname.setText(childData.getName()); holder.childname.setText(childData.getName());
holder.loginButton.setOnClickListener(v -> {
if (this.loginButtonCallback != null) {
this.loginButtonCallback.onLoginButtonClicked(childData.getId());
}
});
} }
@Override @Override

View File

@ -12,6 +12,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -64,9 +65,10 @@ public class SettingMainFragment extends Fragment {
/** /**
* 親情報を更新する * 親情報を更新する
*
* @return CompletableFuture<Void> * @return CompletableFuture<Void>
*/ */
private CompletableFuture<Void> updateParentInfo(){ private CompletableFuture<Void> updateParentInfo() {
return parentData.getParent(new ParentModelCallback() { return parentData.getParent(new ParentModelCallback() {
@Override @Override
public void onUnchanged() { public void onUnchanged() {
@ -91,10 +93,11 @@ public class SettingMainFragment extends Fragment {
/** /**
* 子供情報を更新する * 子供情報を更新する
*
* @return CompletableFuture<Void> * @return CompletableFuture<Void>
*/ */
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
private CompletableFuture<Void> updateChildInfo(){ private CompletableFuture<Void> updateChildInfo() {
return childData.getChildList(new ChildModelCallback() { return childData.getChildList(new ChildModelCallback() {
@Override @Override
public void onUnchanged() { public void onUnchanged() {
@ -171,19 +174,64 @@ public class SettingMainFragment extends Fragment {
// ダイアログの設定 // ダイアログの設定
LayoutInflater dialogInflater = requireActivity().getLayoutInflater(); LayoutInflater dialogInflater = requireActivity().getLayoutInflater();
View childListView = dialogInflater.inflate(R.layout.add_child_list_dialog,null); View childListView = dialogInflater.inflate(R.layout.add_child_list_dialog, null);
View addChildDialogView = dialogInflater.inflate(R.layout.fragment_login_dialog_view, null);
View childListItemView = inflater.inflate(R.layout.list_item_child_name_list, container, false);
mainAdapter.setLoginButtonCallback(new SettingAdapter.LoginButtonCallback() {
@Override
public void onLoginButtonClicked(String childId) {
// Toast.makeText(getContext(), "ボタンがクリックされました(" + childId + ")", Toast.LENGTH_LONG).show();
int loginCode = childData.issueLoginCode(childId).join();
TextView loginCodeTextView = addChildDialogView.findViewById(R.id.loginCode);
new StringBuilder(Integer.toString(loginCode)).insert(3, "-");
loginCodeTextView.setText(
new StringBuilder(Integer.toString(loginCode)).insert(3, "-")
);
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext());
builder.setTitle("ログインコード")
.setView(addChildDialogView)
.setNeutralButton("閉じる", null);
builder.create();
// childListItemView.findViewById(R.id.loginButton).setOnClickListener(v -> {
builder.show();
// });
}
});
// int loginCode = childData.issueLoginCode("543256").join();
// TextView loginCodeTextView = addChildDialogView.findViewById(R.id.loginCode);
// new StringBuilder(Integer.toString(loginCode)).insert(3,"-");
//
// loginCodeTextView.setText(
// new StringBuilder(Integer.toString(loginCode)).insert(3,"-"));
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext());
builder.setTitle("ログインコード")
.setView(addChildDialogView)
.setNeutralButton("閉じる", null);
builder.create();
//
// childListItemView.findViewById(R.id.loginButton).setOnClickListener(v -> {
// builder.show();
// });
//子供の名前追加のダイアログ //子供の名前追加のダイアログ
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext()); MaterialAlertDialogBuilder addChildBuilder = new MaterialAlertDialogBuilder(requireContext());
builder.setTitle("お子様の名前を入力してください。") addChildBuilder.setTitle("お子様の名前を入力してください。")
.setView(childListView) .setView(childListView)
.setPositiveButton("追加",null) .setPositiveButton("追加", null)
.setNeutralButton("閉じる",null); .setNeutralButton("閉じる", null);
builder.create(); addChildBuilder.create();
// ダイアログの表示 // ダイアログの表示
view.findViewById(R.id.addchildname).setOnClickListener(v -> { view.findViewById(R.id.addchildname).setOnClickListener(v -> {
builder.show(); addChildBuilder.show();
}); });
return view; return view;

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/loginCode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="30dp"
android:paddingBottom="25dp"
android:textAppearance="@style/TextAppearance.AppCompat.Display3" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>