diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 498ac9e..78b143c 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ef76412..3b21a2e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,12 +63,12 @@ android:exported="true" android:label="@string/title_activity_sign_up"> - - + + - - + + - - - - + + + + requestingDataSet = new ArrayList<>(); - List RequestingDataList = new ArrayList<>(); + List requestingDataList = new ArrayList<>(); //xmlからrvにRecyclerViewを取得、アダプターを宣言 RecyclerView rv = (RecyclerView) findViewById(R.id.requestingList); - RequestingActivity.RequestingAdapter adapter = new RequestingActivity.RequestingAdapter(RequestingDataList); + RequestingAdapter adapter = new RequestingAdapter(requestingDataList); //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 LinearLayoutManager llm = new LinearLayoutManager(this); - // + //データごとの区切り線を入れる RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); rv.addItemDecoration(itemDecoration); @@ -76,18 +80,46 @@ rv.setHasFixedSize(true); rv.setLayoutManager(llm); + //ViewModelを宣言し、申請先のデータをロードしておく + FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); + friendViewModel.getRequesting(uid); - //表示テスト用に仮データ - List testDataSet = new ArrayList<>(); - for (int i = 0; i < 15; i++) { - RequestingDataModel data = new RequestingDataModel(); - data.setName("ネモフィラ太郎"+ i + "号(テスト)"); + //申請先の一覧のLiveDataへの購読 + friendViewModel.getRequestingLiveData().observe(this, new Observer>() { + //データに変更があった時実行 + @Override + public void onChanged(Collection requestingUsers) { - testDataSet.add(data); - } - //onChange内に書くべき表示部分 - adapter.setList(testDataSet); - rv.setAdapter(adapter); + //表示用のDataListを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように) + requestingDataList.clear(); + //受け取ったLivedataの要素分繰り返し、セット + for (AccountNameJson user: requestingUsers) { + //dataを宣言 dataに投稿の必要なデータをセットし、それをpostsDatasetに追加してリストを作る + RequestingDataModel data = new RequestingDataModel(); + data.setName(user.getName()); + + //投稿一つの情報がdataに全部セットされたらDatasetに追加 + requestingDataList.add(data); + } + + //onChange内に書くべき表示部分 + adapter.setList(requestingDataList); + rv.setAdapter(adapter); + } + }); + + +// //表示テスト用に仮データ +// List testDataSet = new ArrayList<>(); +// for (int i = 0; i < 15; i++) { +// RequestingDataModel data = new RequestingDataModel(); +// data.setName("ネモフィラ太郎"+ i + "号(テスト)"); +// +// testDataSet.add(data); +// } +// //onChange内に書くべき表示部分 +// adapter.setList(testDataSet); +// rv.setAdapter(adapter); } @@ -97,29 +129,40 @@ //とりあえずnameのみで作成 //Adapter - public class RequestingAdapter extends RecyclerView.Adapter { + public class RequestingAdapter extends RecyclerView.Adapter { - private List list; + private List list; - public RequestingAdapter(List list) { + public RequestingAdapter(List list) { this.list =list; } - public void setList(List list) { + public void setList(List list) { this.list = list; } @NonNull @Override - public RequestingActivity.RequestingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - + public RequestingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + //1データあたりのレイアウトを読み込み、ビューホルダーを宣言 View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_requesting_activity, parent,false); - RequestingActivity.RequestingViewHolder vh = new RequestingActivity.RequestingViewHolder(inflate); + RequestingViewHolder vh = new RequestingViewHolder(inflate); + + // リスト内のボタンを押した時の処理 + vh.deleteButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int position = vh.getBindingAdapterPosition(); + // 処理はonItemClickに + onItemClick(v, position, list.get(position)); + } + }); + return vh; } @Override - public void onBindViewHolder(@NonNull RequestingActivity.RequestingViewHolder holder, int position) { + public void onBindViewHolder(@NonNull RequestingViewHolder holder, int position) { holder.nameView.setText(list.get(position).getName()); } @@ -127,15 +170,21 @@ public int getItemCount() { return list.size(); } + + void onItemClick(View view, int position, RequestingDataModel requesting) { + // このメソッドをActivity内でオーバーライドして、クリックイベントの処理を設定する + } } //ViewHolder public class RequestingViewHolder extends RecyclerView.ViewHolder { public TextView nameView; + public Button deleteButton; public RequestingViewHolder(@NonNull View itemView) { super(itemView); nameView = (TextView) itemView.findViewById(R.id.requestingName); + deleteButton = itemView.findViewById(R.id.requestingDeleteButton); } }