SettingMainFragmentリファクタリング #121
|
@ -3,7 +3,6 @@ package one.nem.kidshift.feature.setting;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
@ -16,8 +15,8 @@ import android.widget.TextView;
|
||||||
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
@ -48,7 +47,7 @@ public class SettingMainFragment extends Fragment {
|
||||||
|
|
||||||
TextView username;
|
TextView username;
|
||||||
|
|
||||||
TextView useradress;
|
TextView userMailAddress;
|
||||||
|
|
||||||
SettingAdapter mainAdapter;
|
SettingAdapter mainAdapter;
|
||||||
SwipeRefreshLayout swipeRefreshLayout;
|
SwipeRefreshLayout swipeRefreshLayout;
|
||||||
|
@ -63,6 +62,10 @@ public class SettingMainFragment extends Fragment {
|
||||||
logger = ksLoggerFactory.create("SettingMainFragment");
|
logger = ksLoggerFactory.create("SettingMainFragment");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 親情報を更新する
|
||||||
|
* @return CompletableFuture<Void>
|
||||||
|
*/
|
||||||
private CompletableFuture<Void> updateParentInfo(){
|
private CompletableFuture<Void> updateParentInfo(){
|
||||||
return parentData.getParent(new ParentModelCallback() {
|
return parentData.getParent(new ParentModelCallback() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -81,11 +84,15 @@ public class SettingMainFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}).thenAccept(parentModel -> {
|
}).thenAccept(parentModel -> {
|
||||||
username.setText(parentModel.getName() != null ? parentModel.getName() : "親の名前");
|
username.setText(parentModel.getName() != null ? parentModel.getName() : "親の名前");
|
||||||
useradress.setText(parentModel.getEmail() != null ? parentModel.getEmail() : "親のアドレス");
|
userMailAddress.setText(parentModel.getEmail() != null ? parentModel.getEmail() : "親のアドレス");
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子供情報を更新する
|
||||||
|
* @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() {
|
||||||
|
@ -113,6 +120,9 @@ public class SettingMainFragment extends Fragment {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ユーザー情報を更新するラッパー
|
||||||
|
*/
|
||||||
private void updateInfo() {
|
private void updateInfo() {
|
||||||
CompletableFuture<Void> updateParent = updateParentInfo();
|
CompletableFuture<Void> updateParent = updateParentInfo();
|
||||||
CompletableFuture<Void> updateChildList = updateChildInfo();
|
CompletableFuture<Void> updateChildList = updateChildInfo();
|
||||||
|
@ -125,6 +135,10 @@ public class SettingMainFragment extends Fragment {
|
||||||
updateParent.thenCombine(updateChildList, (res1, res2) -> null).thenRun(() -> {
|
updateParent.thenCombine(updateChildList, (res1, res2) -> null).thenRun(() -> {
|
||||||
logger.debug("アップデート完了");
|
logger.debug("アップデート完了");
|
||||||
swipeRefreshLayout.setRefreshing(false);
|
swipeRefreshLayout.setRefreshing(false);
|
||||||
|
}).exceptionally(e -> {
|
||||||
|
logger.error("アップデート失敗: " + e.getMessage());
|
||||||
|
swipeRefreshLayout.setRefreshing(false);
|
||||||
|
return null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,60 +149,49 @@ public class SettingMainFragment extends Fragment {
|
||||||
|
|
||||||
View view = inflater.inflate(R.layout.fragment_setting_main, container, false);
|
View view = inflater.inflate(R.layout.fragment_setting_main, container, false);
|
||||||
|
|
||||||
|
// ビューの取得
|
||||||
username = view.findViewById(R.id.username);
|
username = view.findViewById(R.id.username);
|
||||||
useradress = view.findViewById(R.id.useradress);
|
userMailAddress = view.findViewById(R.id.useradress);
|
||||||
|
swipeRefreshLayout = view.findViewById(R.id.swipe_refresh_layout);
|
||||||
RecyclerView recyclerView = view.findViewById(R.id.childrecyclerview);
|
RecyclerView recyclerView = view.findViewById(R.id.childrecyclerview);
|
||||||
|
|
||||||
|
// RecyclerViewの設定
|
||||||
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
|
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
|
||||||
recyclerView.setLayoutManager(layoutManager);
|
recyclerView.setLayoutManager(layoutManager);
|
||||||
|
|
||||||
mainAdapter = new SettingAdapter();
|
mainAdapter = new SettingAdapter();
|
||||||
recyclerView.setAdapter(mainAdapter);
|
recyclerView.setAdapter(mainAdapter);
|
||||||
|
|
||||||
// Pull-to-refresh(スワイプで更新)
|
// ユーザー情報の更新(初回)
|
||||||
swipeRefreshLayout = view.findViewById(R.id.swipe_refresh_layout);
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO:
|
|
||||||
- コールバックの処理を実装
|
|
||||||
- 結果に応じてRecyclerViewを更新する
|
|
||||||
- キャッシュ受け取りの時にjoinでUIスレッドをブロックしないように
|
|
||||||
- Placeholderの表示?
|
|
||||||
- エラーハンドリング try catch文
|
|
||||||
- onFailed時にそれを通知
|
|
||||||
*/
|
|
||||||
|
|
||||||
updateInfo();
|
|
||||||
|
|
||||||
swipeRefreshLayout.setOnRefreshListener(() ->{
|
|
||||||
|
|
||||||
updateInfo();
|
updateInfo();
|
||||||
|
|
||||||
|
// スワイプリフレッシュのリスナー
|
||||||
|
swipeRefreshLayout.setOnRefreshListener(() -> {
|
||||||
|
updateInfo(); // ユーザー情報の更新
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (Exception e) {
|
// ダイアログの設定
|
||||||
//
|
LayoutInflater dialogInflater = requireActivity().getLayoutInflater();
|
||||||
}
|
View childListView = dialogInflater.inflate(R.layout.add_child_list_dialog,null);
|
||||||
|
|
||||||
LayoutInflater inflater1 = requireActivity().getLayoutInflater();
|
|
||||||
View view1 = inflater1.inflate(R.layout.add_child_list_dialog,null);
|
|
||||||
|
|
||||||
//子供の名前追加のダイアログ
|
//子供の名前追加のダイアログ
|
||||||
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext());
|
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext());
|
||||||
builder.setTitle("お子様の名前を入力してください。")
|
builder.setTitle("お子様の名前を入力してください。")
|
||||||
.setView(view1)
|
.setView(childListView)
|
||||||
.setPositiveButton("追加",null)
|
.setPositiveButton("追加",null)
|
||||||
.setNeutralButton("閉じる",null);
|
.setNeutralButton("閉じる",null);
|
||||||
builder.create();
|
builder.create();
|
||||||
|
|
||||||
|
// ダイアログの表示
|
||||||
view.findViewById(R.id.addchildname).setOnClickListener(v -> {
|
view.findViewById(R.id.addchildname).setOnClickListener(v -> {
|
||||||
builder.show();
|
builder.show();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
// TODO: 更新する?
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user