diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 4343ab5..960c647 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -19,6 +19,7 @@ + diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java index dbca5a6..2df9314 100644 --- a/app/src/main/java/com/example/nemophila/FriendActivity.java +++ b/app/src/main/java/com/example/nemophila/FriendActivity.java @@ -65,8 +65,7 @@ .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - Toast.makeText(FriendActivity.this, friend.getName(), Toast.LENGTH_SHORT).show(); -// friendViewModel.deleteFriend(myUid, friend.getId(), myToken); + friendViewModel.deleteFriend(myUid, friend.getId(), myToken); } }) .setNegativeButton("キャンセル", null) @@ -132,7 +131,7 @@ @Override public FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int ViewType) { // layoutXMLからViewを生成 - View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_friends_activity, parent,false); + View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.friend_list_item, parent,false); // ViewHolderを生成 FriendsViewHolder vh = new FriendsViewHolder(inflate); diff --git a/app/src/main/java/com/example/nemophila/MyPageActivity.java b/app/src/main/java/com/example/nemophila/MyPageActivity.java index 47eeaaa..502a50b 100644 --- a/app/src/main/java/com/example/nemophila/MyPageActivity.java +++ b/app/src/main/java/com/example/nemophila/MyPageActivity.java @@ -6,13 +6,17 @@ 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.ImageButton; import android.widget.TextView; +import android.widget.Toast; import com.example.nemophila.entities.Post; import com.example.nemophila.viewmodels.AccountViewModel; @@ -28,9 +32,11 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_mypage); - Nemophila nemophila = (Nemophila) getApplication(); + //初期化 + Nemophila nemophila = (Nemophila) this.getApplication(); String uid = nemophila.getUid(); String name = nemophila.getName(); + String token = nemophila.getToken(); TextView myName = (TextView) findViewById(R.id.name); myName.setText(name); TextView id = (TextView) findViewById(R.id.id); @@ -94,10 +100,28 @@ }); /* ここからあんまわかっていない */ - RecyclerView rv = (RecyclerView) findViewById(R.id.postsList); + RecyclerView rv = findViewById(R.id.postsList); LinearLayoutManager llm = new LinearLayoutManager(this); List myPageActDataset = new ArrayList<>(); - MyPageActAdapter adapter = new MyPageActAdapter(myPageActDataset); + MyPageActAdapter adapter = new MyPageActAdapter(myPageActDataset) { + @Override + void onDeleteButtonClick(View view, int position, MyPageActDataModel dataModel) { + new AlertDialog.Builder(MyPageActivity.this) + .setTitle("警告") + .setMessage("この投稿を削除しますか?") + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Toast.makeText(MyPageActivity.this, dataModel.getPid(), Toast.LENGTH_SHORT).show(); + System.out.println("投稿を削除しました。"); +// accountViewModel.deleteAccountPost(dataModel.getSid(), uid, dataModel.getPid(), token); + } + }) + .setNegativeButton("No", null) + .create() + .show(); + } + }; rv.setHasFixedSize(true); rv.setLayoutManager(llm); @@ -138,22 +162,24 @@ /* ここからMyPageActivityの内部クラス */ // Adapter - public class MyPageActAdapter extends RecyclerView.Adapter { - + abstract public class MyPageActAdapter extends RecyclerView.Adapter { private List list; - - public void setList(List list) { - this.list = list; - } - - public MyPageActAdapter(List list) { - this.list = list; - } + public void setList(List list) { this.list = list; } + public MyPageActAdapter(List list) { this.list = list; } @Override public MyPageActViewHolder onCreateViewHolder(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); + + vh.deleteButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int position = vh.getBindingAdapterPosition(); + onDeleteButtonClick(view, position, list.get(position)); + } + }); + return vh; } @@ -166,9 +192,9 @@ } @Override - public int getItemCount() { - return list.size(); - } + public int getItemCount() { return list.size(); } + + abstract void onDeleteButtonClick(View view, int position, MyPageActDataModel dataModel); } // ViewHolder @@ -177,13 +203,15 @@ public TextView rateView; public TextView genreView; public TextView commentView; + public ImageButton deleteButton; - public MyPageActViewHolder(View itemView) { - super(itemView); - dateView = (TextView) itemView.findViewById(R.id.date); - rateView = (TextView) itemView.findViewById(R.id.rate); - genreView = (TextView) itemView.findViewById(R.id.genre); - commentView = (TextView) itemView.findViewById(R.id.comment); + public MyPageActViewHolder(View view) { + super(view); + dateView = (TextView) view.findViewById(R.id.date); + rateView = (TextView) view.findViewById(R.id.rate); + genreView = (TextView) view.findViewById(R.id.genre); + commentView = (TextView) view.findViewById(R.id.comment); + deleteButton = view.findViewById(R.id.deleteButton); } } @@ -193,6 +221,8 @@ private String rate; private String genre; private String comment; + private String sid; + private String pid; public String getDate() { return date; @@ -221,5 +251,11 @@ public void setComment(String comment) { 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/RequestedActivity.java b/app/src/main/java/com/example/nemophila/RequestedActivity.java index 19e1515..724535d 100644 --- a/app/src/main/java/com/example/nemophila/RequestedActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestedActivity.java @@ -61,7 +61,7 @@ public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(RequestedActivity.this, userModel.getName(), Toast.LENGTH_SHORT).show(); System.out.println("承諾ボタンが押されました: " + userModel.getName()); - friendViewModel.putFriend(uid, userModel.getName() ,userModel.getId(), token); + friendViewModel.putFriend(uid, userModel.getId() ,userModel.getName(), token); } }) .setNegativeButton("Cancel", null) @@ -96,6 +96,7 @@ rv.setLayoutManager(llm); friendViewModel.getRequested(uid); + friendViewModel.getFriends(uid); friendViewModel.getRequestedLiveData().observe(this, new Observer>() { @Override public void onChanged(Collection accountNameJson) { diff --git a/app/src/main/java/com/example/nemophila/RequestingActivity.java b/app/src/main/java/com/example/nemophila/RequestingActivity.java index 988fadd..12f8900 100644 --- a/app/src/main/java/com/example/nemophila/RequestingActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestingActivity.java @@ -49,8 +49,6 @@ uid = ((Nemophila)getApplication()).getUid(); token = ((Nemophila)getApplication()).getToken(); - - //左上のボタンでマイページへ遷移 Button returnButton = (Button)findViewById(R.id.requestingAcReturnButton); returnButton.setOnClickListener(new View.OnClickListener(){ @@ -81,22 +79,31 @@ //ViewModelからアカウントが返ってくれば(データ変更があれば)実行 @Override public void onChanged(Account user) { - requestingName = (user.getName()); + 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); + //申請を送るダイアログ + 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を渡す + //ダイアログの表示 + dialog.show(getSupportFragmentManager(), "Requesting_dialog"); + //OK押したら申請するメソッドにuid、requestingId、tokenを渡す + } } }); - } + + }); @@ -125,7 +132,6 @@ } }; - //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 LinearLayoutManager llm = new LinearLayoutManager(this); //データごとの区切り線を入れる 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 e8b46a1..a3bf6ff 100644 --- a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java +++ b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java @@ -34,7 +34,8 @@ @Path("uid") String uid ); - @DELETE("accounts/{uid}") + @FormUrlEncoded + @POST("accounts/{uid}") Call deleteAccount( @Path("uid") String uid, @Field("token") String token @@ -69,7 +70,8 @@ @Path("uid") String uid ); - @DELETE("shops/{sid}/posts/{uid}/{pid}") + @FormUrlEncoded + @POST("shops/{sid}/posts/{uid}/{pid}") Call deletePost( @Path("sid") String sid, @Path("uid") String uid, diff --git a/app/src/main/java/com/example/nemophila/resources/FriendsRest.java b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java index 03cc094..85c6305 100644 --- a/app/src/main/java/com/example/nemophila/resources/FriendsRest.java +++ b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java @@ -10,6 +10,7 @@ import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; +import retrofit2.http.POST; import retrofit2.http.PUT; import retrofit2.http.Path; @@ -27,7 +28,8 @@ @Field("token") String token ); - @DELETE("accounts/{uid}/friends/{fid}") + @FormUrlEncoded + @POST("accounts/{uid}/friends/{fid}") Call deleteFriend( @Path("uid") String uid, @Path("fid") String fid, @@ -48,7 +50,7 @@ ); @FormUrlEncoded - @DELETE("accounts/{uid}/requesting/{requesting_id}") + @POST("accounts/{uid}/requesting/{requesting_id}") Call deleteRequesting( @Path("uid") String uid, @Path("requesting_id") String requesting_id, @@ -61,7 +63,7 @@ ); @FormUrlEncoded - @DELETE("accounts/{uid}/requested/{requested_id}") + @POST("accounts/{uid}/requested/{requested_id}") Call deleteRequested( @Path("uid") String uid, @Path("requested_id") String requested_id, diff --git a/app/src/main/java/com/example/nemophila/resources/ShopsRest.java b/app/src/main/java/com/example/nemophila/resources/ShopsRest.java index 5626822..c781f22 100644 --- a/app/src/main/java/com/example/nemophila/resources/ShopsRest.java +++ b/app/src/main/java/com/example/nemophila/resources/ShopsRest.java @@ -45,7 +45,8 @@ @Path("sid") String sid ); - @DELETE("shops/{sid}/posts/{uid}/{pid}") + @FormUrlEncoded + @POST("shops/{sid}/posts/{uid}/{pid}") Call deletePost( @Path("sid") String sid, 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 8cc8f52..3216931 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java @@ -171,10 +171,16 @@ @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { - Account ac = new Account(response.body()); - accountLiveData.setValue(ac); - System.out.println("success"); + if(response.body() == null){ + accountLiveData.setValue(null); + System.out.println("response error"); + }else { + Account ac = new Account(response.body()); + accountLiveData.setValue(ac); + System.out.println("success"); + } } else { + accountLiveData.setValue(null); System.out.println("response error"); } } diff --git a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java index a7493ca..474849b 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java @@ -147,13 +147,13 @@ } // 対象のアカウントのフレンド申請を行うときの情報削除 public void deleteRequesting(String uid,String requesting_id, String token) { - Call call = friendsRest.deleteRequesting(uid,requesting_id,token); + Call call = friendsRest.deleteRequesting(uid, requesting_id, token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { removeRequestingLiveData(requesting_id); - System.out.println("Successful"); + System.out.println("Successful Delete"); } else { System.out.println("ResponseError: " + response.code()); } @@ -236,8 +236,8 @@ continue; } preData.add(anj); - friendsLiveData.setValue(preData); } + friendsLiveData.setValue(preData); } private void removeRequestingLiveData(String id) { @@ -247,8 +247,8 @@ continue; } preData.add(anj); - requestingLiveData.setValue(preData); } + requestingLiveData.setValue(preData); } private void removeRequestedLiveData(String id) { @@ -258,7 +258,7 @@ continue; } preData.add(anj); - requestedLiveData.setValue(preData); } + requestedLiveData.setValue(preData); } } 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 88ea984..8a3b95a 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java @@ -35,11 +35,13 @@ // ライブデータ final private MutableLiveData> shopsLiveData; + final private MutableLiveData> nearShopsLiveData; final private MutableLiveData currentShopLiveData; // コンストラクタ public ShopsViewModel() { this.shopsLiveData = new MutableLiveData<>(); + this.nearShopsLiveData = new MutableLiveData<>(); this.currentShopLiveData = new MutableLiveData<>(); this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/") @@ -53,7 +55,10 @@ public LiveData> getShopsLiveData() { return this.shopsLiveData; } - public LiveData getCurrentLiveData() { return this.currentShopLiveData; } + + public LiveData getCurrentLiveData() { + return this.currentShopLiveData; + } // ShopToMarkerに新しく店と地図上のピンを紐づける public void setShopAndMarker(Shop shop, Marker marker) { @@ -61,7 +66,9 @@ } // ShopToMarkerからkeyを指定して、要素を削除する - public void removeShopAndMarker(Shop shop) { ShopToMarker.remove(shop); } + public void removeShopAndMarker(Shop shop) { + ShopToMarker.remove(shop); + } // 店に紐づいたピンを返す public Marker getMarker(Shop shop) { @@ -122,23 +129,48 @@ }); } - // 新しく店を生成する - public void createShop(String name, double longitude, double latitude) { - Call call = shopsRest.createShop(name, longitude, latitude); + public void longClickViewArea(double ux, double uy, double lx, double ly) { + // 画面内に収まる範囲の店舗を取得する + Call> call = shopsRest.getShops(ux, uy, lx, ly); - call.enqueue(new Callback() { + call.enqueue(new Callback>() { + // 通信が成功 @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call> call, Response> response) { + // 通信が正常に動作 if (response.isSuccessful()) { - currentShopLiveData.setValue(response.body()); + nearShopsLiveData.setValue(response.body()); + } else { + System.out.println("ShopsViewModel : 通信失敗"); } } + // 通信が失敗 @Override - public void onFailure(Call call, Throwable t) { - System.out.println("通信失敗 : createShop"); - System.out.println(t); - } + public void onFailure(Call> call, Throwable t) { + System.out.println("setViewModel : 通信失敗"); + System.out.println(t); + } }); } -} + + // 新しく店を生成する + 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()); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("通信失敗 : createShop"); + System.out.println(t); + } + }); + } + } diff --git a/app/src/main/res/drawable/blue_circle_button.xml b/app/src/main/res/drawable/blue_circle_button.xml index e007807..182023f 100644 --- a/app/src/main/res/drawable/blue_circle_button.xml +++ b/app/src/main/res/drawable/blue_circle_button.xml @@ -2,5 +2,5 @@ + android:color="@color/design_default_color_secondary"/> diff --git a/app/src/main/res/drawable/ic_baseline_replay_24.xml b/app/src/main/res/drawable/ic_baseline_replay_24.xml new file mode 100644 index 0000000..effe564 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_replay_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml index 5ac6e12..8a95aba 100644 --- a/app/src/main/res/layout/activity_friend.xml +++ b/app/src/main/res/layout/activity_friend.xml @@ -1,43 +1,57 @@ - + tools:context=".FriendActivity" + android:orientation="vertical"> - + + + + + + + + +