//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; // } // // } // //}