diff --git a/app/src/main/java/com/example/nemophila/MyPageActivity.java b/app/src/main/java/com/example/nemophila/MyPageActivity.java index 502a50b..f90011a 100644 --- a/app/src/main/java/com/example/nemophila/MyPageActivity.java +++ b/app/src/main/java/com/example/nemophila/MyPageActivity.java @@ -1,5 +1,6 @@ package com.example.nemophila; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -99,22 +100,22 @@ } }); - /* ここからあんまわかっていない */ RecyclerView rv = findViewById(R.id.postsList); LinearLayoutManager llm = new LinearLayoutManager(this); List myPageActDataset = new ArrayList<>(); MyPageActAdapter adapter = new MyPageActAdapter(myPageActDataset) { + // 「(投稿)削除」ボタンを押した後、「Yes」を押すと対象の投稿を削除する @Override void onDeleteButtonClick(View view, int position, MyPageActDataModel dataModel) { new AlertDialog.Builder(MyPageActivity.this) .setTitle("警告") - .setMessage("この投稿を削除しますか?") + .setMessage("この投稿を削除しますか?\n削除すると元に戻せなくなります!") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - Toast.makeText(MyPageActivity.this, dataModel.getPid(), Toast.LENGTH_SHORT).show(); + Toast.makeText(MyPageActivity.this, "投稿を削除しました。", Toast.LENGTH_SHORT).show(); System.out.println("投稿を削除しました。"); -// accountViewModel.deleteAccountPost(dataModel.getSid(), uid, dataModel.getPid(), token); + accountViewModel.deleteAccountPost(uid, dataModel.getPid(), token); } }) .setNegativeButton("No", null) @@ -127,6 +128,7 @@ rv.setLayoutManager(llm); rv.setAdapter(adapter); + // getAccountPostsLiveDataとの通信により今までにユーザーがしている投稿を表示する accountViewModel.getAccountPosts(uid); accountViewModel.getAccountPostsLiveData().observe(this, new Observer >() { @Override @@ -149,6 +151,7 @@ data.setRate(strRate); data.setGenre(post.getGenre()); data.setComment(post.getComment()); + data.setPid(post.getPid()); myPageActDataset.add(data); } @@ -168,7 +171,7 @@ public MyPageActAdapter(List list) { this.list = list; } @Override - public MyPageActViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public MyPageActViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_my_page_activity_posts, parent,false); MyPageActViewHolder vh = new MyPageActViewHolder(inflate); @@ -184,7 +187,7 @@ } @Override - public void onBindViewHolder(MyPageActViewHolder holder, int position) { + public void onBindViewHolder(@NonNull MyPageActViewHolder holder, int position) { holder.dateView.setText(list.get(position).getDate()); holder.rateView.setText(list.get(position).getRate()); holder.genreView.setText(list.get(position).getGenre()); @@ -205,7 +208,7 @@ public TextView commentView; public ImageButton deleteButton; - public MyPageActViewHolder(View view) { + public MyPageActViewHolder(@NonNull View view) { super(view); dateView = (TextView) view.findViewById(R.id.date); rateView = (TextView) view.findViewById(R.id.rate); @@ -216,12 +219,11 @@ } // DataModel - public class MyPageActDataModel { + public static class MyPageActDataModel { private String date; private String rate; private String genre; private String comment; - private String sid; private String pid; public String getDate() { @@ -252,9 +254,6 @@ this.comment = comment; } - public String getSid() { return sid; } - public void setSid(String sid) { this.sid = sid; } - public String getPid() { return pid; } public void setPid(String sid) { this.pid = pid; } } diff --git a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java index a3bf6ff..02a6203 100644 --- a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java +++ b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java @@ -71,9 +71,8 @@ ); @FormUrlEncoded - @POST("shops/{sid}/posts/{uid}/{pid}") + @POST("accounts/{uid}/posts/{pid}") Call deletePost( - @Path("sid") String sid, @Path("uid") String uid, @Path("pid") String pid, @Field("token") String token diff --git a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java index 3216931..300fbe7 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java @@ -6,6 +6,7 @@ import com.example.nemophila.R; import com.example.nemophila.entities.Account; import com.example.nemophila.entities.AccountJson; +import com.example.nemophila.entities.AccountNameJson; import com.example.nemophila.entities.Post; import com.example.nemophila.entities.PostJson; import com.example.nemophila.resources.AccountsRest; @@ -211,13 +212,14 @@ } // 対象のアカウントがした投稿の削除 - public void deleteAccountPost(String sid, String uid, String pid, String token) { - Call call = accountsRest.deletePost(sid, uid, pid, token); + public void deleteAccountPost(String uid, String pid, String token) { + Call call = accountsRest.deletePost(uid, pid, token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { + deleteAccountPostLiveData(pid); System.out.println("successful"); } else { System.out.println("response error"); @@ -229,4 +231,15 @@ } }); } + + private void deleteAccountPostLiveData(String id) { + ArrayList preData = new ArrayList<>(); + for (Post post: accountPostsLiveData.getValue()) { + if (post.getPid().equals(id)) { + continue; + } + preData.add(post); + } + accountPostsLiveData.setValue(preData); + } } diff --git a/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java index bb4252c..2985f6a 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java @@ -129,4 +129,12 @@ } }); } + + public ArrayList getUserIds() { + ArrayList ids = new ArrayList<>(); + for(Post post: shopPostsLiveData.getValue()) { + ids.add(post.getUid()); + } + return ids; + } } diff --git a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java index e0a8dc9..c31459d 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java @@ -154,23 +154,23 @@ }); } - // 新しく店を生成する - public void createShop (String name,double longitude, double latitude){ - Call call = shopsRest.createShop(name, longitude, latitude); + // 新しく店を生成する + public void createShop (String name,double longitude, double latitude){ + Call call = shopsRest.createShop(name, longitude, latitude); - call.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - if (response.isSuccessful()) { - currentShopLiveData.setValue(response.body()); - } + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + currentShopLiveData.setValue(response.body()); } + } - @Override - public void onFailure(Call call, Throwable t) { - System.out.println("通信失敗 : createShop"); - System.out.println(t); - } - }); - } + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("通信失敗 : createShop"); + System.out.println(t); + } + }); } +}