Newer
Older
NemophilaClient / app / src / main / java / com / example / nemophila / RequestingActivity.java
//package com.example.nemophila;
//
//import androidx.annotation.NonNull;
//import androidx.appcompat.app.AppCompatActivity;
//import androidx.lifecycle.Observer;
//import androidx.lifecycle.ViewModelProvider;
//import androidx.recyclerview.widget.DividerItemDecoration;
//import androidx.recyclerview.widget.LinearLayoutManager;
//import androidx.recyclerview.widget.RecyclerView;
//
//import android.app.AlertDialog;
//import android.content.DialogInterface;
//import android.content.Intent;
//import android.os.Bundle;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.Button;
//import android.widget.EditText;
//import android.widget.ImageView;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.example.nemophila.entities.Account;
//import com.example.nemophila.entities.AccountNameJson;
//import com.example.nemophila.entities.ErrorType;
//import com.example.nemophila.entities.Post;
//import com.example.nemophila.viewmodels.AccountViewModel;
//import com.example.nemophila.viewmodels.FriendViewModel;
//import com.example.nemophila.viewmodels.PostsViewModel;
//
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.List;
//
//public class RequestingActivity extends AppCompatActivity {
//
//    FriendViewModel friendViewModel;
//    String uid;
//    String token;
//    String requestingId;
//    String requestingName;
//    String searchingId;
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_requesting);
//        //Nemophilaから自分のuidとtokenを取得
//        uid = ((Nemophila)getApplication()).getUid();
//        token = ((Nemophila)getApplication()).getToken();
//
//        //左上のボタンでマイページへ遷移
//        Button returnButton = (Button)findViewById(R.id.requestingAcReturnButton);
//        returnButton.setOnClickListener(new View.OnClickListener(){
//            public void onClick(View v){
//                Intent intent = new Intent(getApplication(), MyPageActivity.class);
//                startActivity(intent);
//            }
//        });
//
//        //idからアカウント名を検索するためのAccountViewModelを宣言しておく
//        AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
//
//        //フレンド検索ボタン
//        Button requestingButton = (Button)findViewById(R.id.requestingSearchButton);
//        requestingButton.setOnClickListener(new View.OnClickListener(){
//
//            @Override
//            public void onClick(View v){
//                //入力されたIDを取得
//                EditText editSearchId = (EditText) findViewById(R.id.inputRequestingId);
//                searchingId = editSearchId.getText().toString();
//                //取得したIDからアカウントを読み込み、検索用LiveDataのonChangeへ
//                accountViewModel.fetchAccount(searchingId);
//            }
//        });
//
//        //検索用LiveDataへの購読
//        accountViewModel.getAccountLiveData().observe(RequestingActivity.this, new Observer<Account>() {
//
//            //ViewModelから検索結果が返ってくれば(データ変更があれば)実行
//            @Override
//            public void onChanged(Account user) {
//
//                if (user == null) {
//                    new AlertDialog.Builder(RequestingActivity.this)
//                            .setTitle("IDが間違っています")
//                            .setPositiveButton("OK", null)
//                            .create()
//                            .show();
//                } else {
//                    requestingName = (user.getName());
//
//                    //申請を送るダイアログ
//                    RequestingDialogFragment dialog = new RequestingDialogFragment(RequestingActivity.this);
//                    //名前を渡す
//                    Bundle args = new Bundle();
//                    args.putString("message", requestingName);
//                    dialog.setArguments(args);
//
//                    //ダイアログの表示
//                    dialog.show(getSupportFragmentManager(), "Requesting_dialog");
//                    //OK押したら申請するメソッドにuid、requestingId、tokenを渡す
//                }
//            }
//        });
//
//        //FriendViewModelの初期化
//        friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class);
//
//        //エラーコードを購読
//        friendViewModel.getErrorLiveData().observe(RequestingActivity.this, new Observer<String>() {
//            @Override
//            public void onChanged(String error) {
//
//                if (error == ErrorType.ResponseError.getText()) {
//                    new AlertDialog.Builder(RequestingActivity.this)
//                            .setTitle("既にフレンド、申請を受けているなどの理由で申請できません")
//                            .setPositiveButton("OK", null)
//                            .create()
//                            .show();
//                }
//            }
//        });
//
//        //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に)
//        List<RequestingDataModel> requestingDataList = new ArrayList<>();
//
//        //xmlからrvにRecyclerViewを取得
//        RecyclerView rv = (RecyclerView) findViewById(R.id.requestingList);
//
//        //アダプターを宣言し、削除ボタンを押したときの処理をオーバーライド
//        RequestingAdapter adapter = new RequestingAdapter(requestingDataList){
//            @Override
//            void onDeleteClick(View view, int position, RequestingDataModel user) {
//                new AlertDialog.Builder(RequestingActivity.this)
//                        .setTitle(user.getName() + "さんへの申請を削除しますか?")
//                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
//                            @Override
//                            public void onClick(DialogInterface dialog, int which) {
//                                Toast.makeText(RequestingActivity.this, user.getName(), Toast.LENGTH_SHORT).show();
//                                friendViewModel.deleteRequesting(uid, user.getId(), token);
//                            }
//                        })
//                        .setNegativeButton("キャンセル", null)
//                        .create()
//                        .show();
//            }
//        };
//
//        //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
//        LinearLayoutManager llm = new LinearLayoutManager(this);
//        //データごとの区切り線を入れる
//        RecyclerView.ItemDecoration itemDecoration =
//                new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
//        rv.addItemDecoration(itemDecoration);
//
//        rv.setHasFixedSize(true);
//        rv.setLayoutManager(llm);
//
//        //FriendViewModelを初期化し、申請先のデータをロードしておく
//        friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class);
//        friendViewModel.getRequesting(uid);
//
//        //申請先の一覧のLiveDataへの購読
//        friendViewModel.getRequestingLiveData().observe(this, new Observer<Collection<AccountNameJson>>() {
//            //データに変更があった時実行
//            @Override
//            public void onChanged(Collection<AccountNameJson> requestingUsers) {
//
//                //表示用のDataListを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
//                requestingDataList.clear();
//                //受け取ったLivedataの要素分繰り返し、セット
//                for (AccountNameJson user: requestingUsers) {
//                    //申請先1人に必要な情報をセットするdataを宣言
//                    RequestingDataModel data = new RequestingDataModel();
//                    //dataをpostsDatasetに追加してリストを作る
//                    data.setName(user.getName());
//                    data.setId(user.getUid());
//
//                    //申請先一つの情報がdataに全部セットされたらDatasetに追加 重複していたら追加しない
//                    if(!(requestingDataList.contains(data))) {
//                        requestingDataList.add(0, data);
//                    }
//                }
//
//                //onChange内に書くべき表示部分
//                adapter.setList(requestingDataList);
//                rv.setAdapter(adapter);
//            }
//        });
//    }
//
//
//    //ダイアログでOKを押した時に呼び出される フレンド申請を送るメソッド
//    public void putRequesting(){
//        requestingId = searchingId;
//        friendViewModel.putRequesting(uid, requestingId, requestingName, token);
//    }
//
//    //RecyclerViewのための内部クラス
//    //Adapter
//    public class RequestingAdapter extends RecyclerView.Adapter<RequestingViewHolder> {
//
//        private List<RequestingDataModel> list;
//
//        public RequestingAdapter(List<RequestingDataModel> list) {
//            this.list =list;
//        }
//
//        public void setList(List<RequestingDataModel> list) {
//            this.list = list;
//        }
//
//        @NonNull
//        @Override
//        public RequestingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//            //1データあたりのレイアウトを読み込み、ビューホルダーを宣言
//            View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_requesting_activity, parent,false);
//            RequestingViewHolder vh = new RequestingViewHolder(inflate);
//
//            // リスト内の削除ボタンを押した時の処理
//            vh.deleteButton.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    int position = vh.getBindingAdapterPosition();
//                    // 処理はonDeleteClickに
//                    onDeleteClick(v, position, list.get(position));
//                }
//            });
//
//            return vh;
//        }
//
//        @Override
//        public void onBindViewHolder(@NonNull RequestingViewHolder holder, int position) {
//            holder.nameView.setText(list.get(position).getName());
//        }
//
//        @Override
//        public int getItemCount() {
//            return list.size();
//        }
//
//        void onDeleteClick(View view, int position, RequestingDataModel requesting) {
//            // このメソッドをActivity内でオーバーライドして、クリックイベントの処理を設定する
//        }
//    }
//
//    //ViewHolder
//    public class RequestingViewHolder extends RecyclerView.ViewHolder {
//        public TextView nameView;
//        public ImageView iconView;
//        public Button deleteButton;
//
//        public RequestingViewHolder(@NonNull View itemView) {
//            super(itemView);
//            nameView = (TextView) itemView.findViewById(R.id.requestingName);
//            iconView = itemView.findViewById(R.id.requestingIcon);
//            deleteButton = itemView.findViewById(R.id.requestingDeleteButton);
//        }
//    }
//
//    //DataModel
//    public static class RequestingDataModel extends FriendActivity.RequestingDataModel {
//        private String name;
//        private String id;
//
//        public String getName() {
//            return name;
//        }
//        public String getId() {
//            return id;
//        }
//
//        public void setName(String name) {
//            this.name = name;
//        }
//        public void setId(String id){
//            this.id = id;
//        }
//
//    }
//
//}