diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 0a40946..e69de29 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/example/nemophila/MapsDialogFragment.java b/app/src/main/java/com/example/nemophila/MapsDialogFragment.java new file mode 100644 index 0000000..f2028a4 --- /dev/null +++ b/app/src/main/java/com/example/nemophila/MapsDialogFragment.java @@ -0,0 +1,82 @@ +package com.example.nemophila; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; + +import com.example.nemophila.entities.Shop; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + +public class MapsDialogFragment extends DialogFragment { + + private Collection shops; + public MapsDialogFragment(Collection shops) { + this.shops = shops; + } + Nemophila nemophila; + + + @NonNull + @Override + public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { + nemophila = (Nemophila) getActivity().getApplication(); + + String[] choices = new String[shops.size()]; + //ArrayList choices = new ArrayList<>(); + Shop[] shoplist = new Shop[shops.size()]; + + int j = 0; + for (Iterator i = shops.iterator(); i.hasNext(); j++) { + Shop tmp = (Shop)i.next(); + choices[j] = tmp.getName(); + + shoplist[j] = tmp; + } + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle("投稿したいお店はこの中にありますか?") + .setPositiveButton("該当する店がありません(新規作成)", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + //このボタンを押した時の処理を書きます。 + //新規投稿画面へ遷移 + //ShopCreate画面に遷移 + Intent intent = new Intent(getActivity(), ShopCreateActivity.class); + startActivity(intent); + } + }) + .setNeutralButton("キャンセル", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + // このボタンを押した時の処理を書きます。 + } + }) + .setItems(choices, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Toast.makeText(getActivity(), + String.format("「%s」を選択しました。", choices[which]), + Toast.LENGTH_SHORT) + .show(); + + //そのShopをNemophilaに渡す + nemophila.setCurrentShop(shoplist[which]); + + //そのShopのPostActivityに遷移 + //PostCreate画面に遷移 + Intent intent = new Intent(getActivity(), PostActivity.class); + startActivity(intent); + } + }); + return builder.create(); + } +} diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java index 0ed3186..a078e85 100644 --- a/app/src/main/java/com/example/nemophila/MapsFragment.java +++ b/app/src/main/java/com/example/nemophila/MapsFragment.java @@ -7,6 +7,7 @@ import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; +import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; @@ -32,6 +33,8 @@ import com.example.nemophila.databinding.ActivityMainBinding; import com.example.nemophila.entities.Shop; +import com.example.nemophila.viewmodels.FriendViewModel; +import com.example.nemophila.viewmodels.PostsViewModel; import com.example.nemophila.viewmodels.ShopsViewModel; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; @@ -52,6 +55,8 @@ public class MapsFragment extends Fragment implements LocationListener { ShopsViewModel shopsViewModel; + FriendViewModel friendViewModel; + PostsViewModel postsViewModel; Nemophila nemophila; private GoogleMap mMap; @@ -61,12 +66,13 @@ private LatLng shopLatlng; // private LatLng testLatlng; // private LatLng testLatlng2; -// private LatLng tapLatlng; + private LatLng tapLatlng; // private CameraPosition nowCamera; // private LatLng nowLatlng; private Marker currentMarker; private BitmapDescriptor bd; - + private boolean isLongClick; + private LocationManager locationManager; @@ -78,34 +84,61 @@ nemophila = (Nemophila) getActivity().getApplication(); mMap = googleMap; - - //ViewModelへのアクセス shopsViewModel = new ViewModelProvider(getActivity()).get(ShopsViewModel.class); + friendViewModel = new ViewModelProvider(getActivity()).get(FriendViewModel.class); + postsViewModel = new ViewModelProvider(getActivity()).get(PostsViewModel.class); - // LiveDataへの購読 + //フレンドの更新が入った時の処理(LiveDataへの購読) + friendViewModel.getFriendsLiveData().observe(getActivity(), friends -> { + Toast.makeText(getActivity(), + String.format("フレンドの更新を確認しました。"), + Toast.LENGTH_SHORT) + .show(); + //nemophilaにセットしておく + nemophila.setFriends(friends); + }); + + // 店情報の更新が入った時の処理(LiveDataへの購読) shopsViewModel.getShopsLiveData().observe(getActivity(), shops -> { - //受け取ったshopsに対してMarkerが立っているかを確認 - //対応するMarkerがなければMarkerを立てる - for (Shop shop : shops) { - if (shopsViewModel.getMarker(shop) == null) { + Toast.makeText(getActivity(), + String.format("表示していない店を確認しました。ピンを立てます"), + Toast.LENGTH_SHORT) + .show(); - shopLatlng = new LatLng(shop.getLatitude(), shop.getLongitude()); - System.out.println(shopLatlng); - Marker createMaker = mMap.addMarker(new MarkerOptions().position(shopLatlng).title("")); - //マーカーに店情報を持たせる - createMaker.setTag(shop); - //ShopToMarkerに紐づけ - shopsViewModel.setShopAndMarker(shop, createMaker); + for (Shop shop : shops) { + //受け取ったshopsにfriendsの投稿が含まれているかを確認,受け取ったshopsに対してMarkerが立っているかを確認 + if ( shopsViewModel.getMarker(shop) == null) { //フレンド以外の投稿のピンも立てたい場合 + //if( && shopsViewModel.getMarker(shop) == null) { + + //各shopに対応するMarkerがなければMarkerを立てる + shopLatlng = new LatLng(shop.getLatitude(), shop.getLongitude()); + System.out.println(shopLatlng); + Marker createMaker = mMap.addMarker(new MarkerOptions().position(shopLatlng).title("")); + //マーカーに店情報を持たせる + createMaker.setTag(shop); + //ShopToMarkerに紐づけ + shopsViewModel.setShopAndMarker(shop, createMaker); + } } - } + }); + + // 長押しを認識した後の処理(LiveDataへの購読) + shopsViewModel.getNearShopsLiveData().observe(getActivity(), shops -> { + Toast.makeText(getActivity(), + String.format("近辺の店を確認しました。ダイアログを表示します"), + Toast.LENGTH_SHORT) + .show(); + + //長押し時は周辺のピンを全て取得し、ダイアログに表示する + DialogFragment dialogFragment = new MapsDialogFragment(shops); + dialogFragment.show(getActivity().getSupportFragmentManager(),"mapsdialog"); }); //初期画面の座標(現在地をロードするまで表示) //initialLatlng = new LatLng(39,138); initialLatlng = new LatLng(nemophila.getCameraLatitude(), nemophila.getCameraLongitude()); //初期画面に移動 - //mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(initialLatlng, 15f)); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(initialLatlng, nemophila.getZoom())); @@ -116,37 +149,42 @@ nemophila.setCameraLatitude(mMap.getCameraPosition().target.latitude); nemophila.setCameraLongitude(mMap.getCameraPosition().target.longitude); nemophila.setZoom(mMap.getCameraPosition().zoom); - - //nowLatlng = new LatLng(nowCamera.target.latitude, nowCamera.target.longitude); - //nowZoom = nowCamera.zoom; //Shopの描画範囲を指定 shopsViewModel.setViewArea(nemophila.getCameraLongitude() + 1, nemophila.getCameraLatitude() + 1, nemophila.getCameraLongitude() - 1, nemophila.getCameraLatitude() - 1); }); - /* - //多分使わない + + // test用 座標を確認するため // タップした時のリスナーをセット mMap.setOnMapClickListener(tapLocation -> { // map(ピン以外)をtapされた位置の緯度経度 tapLatlng = new LatLng(tapLocation.latitude, tapLocation.longitude); - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(tapLatlng, nowZoom)); - shopsViewModel.setViewArea(tapLatlng.longitude+1, tapLatlng.latitude+1, tapLatlng.longitude-1, tapLatlng.latitude-1); + Toast.makeText(getActivity(), + String.format("%s", tapLatlng), + Toast.LENGTH_SHORT) + .show(); }); - */ + //長押し時に店を作成し、その座標にピンを立てる //長押し時にその座標を保存し、投稿画面に移り、Shop作成完了時にはピンを立て、Shop画面に移行 mMap.setOnMapLongClickListener(longpushLocation -> { //長押しされた位置の緯度経度を取得 //LatLng newlocation = new LatLng(longpushLocation.latitude, longpushLocation.longitude); + + //長押し座標を画面中心にしておく + //zoomMap(longpushLocation.latitude, longpushLocation.longitude); //Nemophilaに座標を保存 nemophila.setCurrentLatitude(longpushLocation.latitude); nemophila.setCurrentLongitude(longpushLocation.longitude); //長押しした場合は今からShopを作成するので、CurrentShopをnullで登録しておく nemophila.setCurrentShop(null); - //ShopCreate画面に遷移 - Intent intent = new Intent(getActivity(), ShopCreateActivity.class); - startActivity(intent); + + //長押しでダイアログを表示 + //テスト用 + //shopsViewModel.longClickViewArea(longpushLocation.longitude+1, longpushLocation.latitude+1, longpushLocation.longitude-1, longpushLocation.latitude-1); + //本番環境は↓の範囲で + shopsViewModel.longClickViewArea(longpushLocation.longitude+0.001, longpushLocation.latitude+0.001, longpushLocation.longitude-0.001, longpushLocation.latitude-0.001); }); // ピンをクリックした場合 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/Nemophila.java b/app/src/main/java/com/example/nemophila/Nemophila.java index 14f1aed..a41a04d 100644 --- a/app/src/main/java/com/example/nemophila/Nemophila.java +++ b/app/src/main/java/com/example/nemophila/Nemophila.java @@ -4,9 +4,11 @@ import android.content.SharedPreferences; import com.example.nemophila.entities.Account; +import com.example.nemophila.entities.AccountNameJson; import com.example.nemophila.entities.Shop; import com.google.type.LatLng; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -15,6 +17,7 @@ private String name; private String uid; private String token; + private Collection friends; //ショップのデータ private Shop currentShop; @@ -54,6 +57,9 @@ } return token; } + public Collection getFriends() { + return friends; + } //Shop関連のGetter public Shop getCurrentShop() { @@ -129,6 +135,10 @@ this.token = token; editor.commit(); } + public void setFriends(Collection friends) { + this.friends = friends; + } + public void setCurrentShop(Shop currentShop) { this.currentShop = currentShop; } diff --git a/app/src/main/java/com/example/nemophila/RequestedActivity.java b/app/src/main/java/com/example/nemophila/RequestedActivity.java index 724535d..6a1ef91 100644 --- a/app/src/main/java/com/example/nemophila/RequestedActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestedActivity.java @@ -96,7 +96,6 @@ 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/ShopActivity.java b/app/src/main/java/com/example/nemophila/ShopActivity.java index 1f155ee..6a0e6fa 100644 --- a/app/src/main/java/com/example/nemophila/ShopActivity.java +++ b/app/src/main/java/com/example/nemophila/ShopActivity.java @@ -35,19 +35,11 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_shop); -// //テスト用に仮にcurrentShopをセット -// Shop kariShop = new Shop(); -// kariShop.setSid("151347fa-2c90-44d7-ba48-f23f475b910d"); -// kariShop.setName("店D"); -// kariShop.setLongitude(56.7); -// kariShop.setLatitude(78.9); -// ((Nemophila)getApplication()).setCurrentShop(kariShop); - - //NemophilaからcurrentShopを取得、店名の表示 - //currentshopに何もないとgetNameとgetSidでアプリが落ちます Shop shop; String shopName; String sid; + + //NemophilaからcurrentShopを取得、店名の表示 shop = ((Nemophila)getApplication()).getCurrentShop(); shopName = shop.getName(); sid = shop.getSid(); @@ -59,14 +51,9 @@ toPostButton.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent(ShopActivity.this, PostActivity.class); - intent.putExtra("toPostSid",sid); startActivity(intent); } }); -// PostActivity側でsidを受け取ってください -// Intent intent = getIntent(); -// sid = intent.getStringExtra("toPostSid"); -// みたいな感じで受け取れるはずです //左上のボタンでメイン画面へ遷移 Button returnButton = (Button)findViewById(R.id.shopAcReturnButton); @@ -77,6 +64,7 @@ } }); + //RecyclerViewに表示する中身を格納するリストを宣言 List postsDataset = new ArrayList<>(); //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内) @@ -98,33 +86,23 @@ PostsViewModel postsViewModel = new ViewModelProvider(this).get(PostsViewModel.class); postsViewModel.loadShopPost(sid); - //LiveDataへの購読 + //投稿を取得するLiveDataへの購読 postsViewModel.getShopPostLiveData().observe(this, new Observer>() { @Override public void onChanged(List ShopPosts) { - //Nemophilaから選択中のジャンルを受け取る + //Nemophilaから選択中のジャンル(HashSet)を受け取る HashSet selectingGenre = ((Nemophila)getApplication()).getSelectGenres(); - //テスト用にHashSetにジャンルを入力 -// HashSet selectingGenre = new HashSet<>(); -// selectingGenre.add("ラーメン"); -// selectingGenre.add("中華"); - //選択中に何かあれば表示 + //選択中のジャンルが何かあれば表示 if(!(selectingGenre.isEmpty())) { TextView genreView = (TextView) findViewById(R.id.shopAcGenre); genreView.setText("選択中のジャンル:" + selectingGenre); } - //Nemophilaから選択中のフレンドを受け取る + //Nemophilaから選択中のフレンド(HashSet)を受け取る HashSet selectingFriend = ((Nemophila)getApplication()).getSelectFriends(); - - //テスト用にHashSetにフレンドを入力 -// HashSet selectingFriend = new HashSet<>(); -// selectingFriend.add("1111"); -// selectingFriend.add("1113"); - - //選択したフレンドの表示のための宣言 + //選択したフレンドを表示するために名前を格納するHashSetの宣言 HashSet selectingFriendName = new HashSet<>(); //postsDatasetを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように) @@ -133,12 +111,12 @@ for (Post post: ShopPosts){ //dataを宣言 dataに投稿の必要なデータをセットし、それをpostsDatasetに追加してリストを作る ShopAcDataModel data = new ShopAcDataModel(); - //フィルター選択中かの判定のためにgenreとuidを先に読み込む + //フィルター判定のためにgenreとuidを、表示用のセットのためにnameを先に読み込む String genre = post.getGenre(); String uid = post.getUid(); String name = post.getName(); - //選択が何もない場合は全ての投稿を、選択ある場合は一致する投稿をdataにセット + //選択が何もない場合は全ての投稿を、選択がある場合は一致する投稿をdataにセット if(selectingGenre.isEmpty() || selectingGenre.contains(genre)) { if(selectingFriend.isEmpty() || selectingFriend.contains(uid)) { data.setName(name); @@ -181,7 +159,6 @@ } //RecyclerViewのための内部クラス - //Adapter public class ShopAcAdapter extends RecyclerView.Adapter { @@ -237,7 +214,7 @@ } } - //DataModel + //DataModel(投稿1つあたりに必要なデータ) public static class ShopAcDataModel { private String name; private String date; 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/FriendViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java index 474849b..83c6596 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java @@ -75,7 +75,6 @@ @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { - addFriendLiveData(fid, name); removeRequestedLiveData(fid); System.out.println("Successful"); } else { @@ -211,15 +210,6 @@ return anj; } - private void addFriendLiveData(String uid, String name) { - ArrayList preData = new ArrayList<>(); - for (AccountNameJson anj: friendsLiveData.getValue()) { - preData.add(anj); - } - preData.add(createAccountNameJson(uid, name)); - friendsLiveData.setValue(preData); - } - private void addRequestingLiveData(String uid, String name) { ArrayList preData = new ArrayList<>(); for (AccountNameJson anj: requestingLiveData.getValue()) { 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); + } + }); } +} diff --git a/app/src/main/res/layout/activity_requesting.xml b/app/src/main/res/layout/activity_requesting.xml index 6dc38db..b15fa49 100644 --- a/app/src/main/res/layout/activity_requesting.xml +++ b/app/src/main/res/layout/activity_requesting.xml @@ -91,13 +91,13 @@ + app:layout_constraintVertical_bias="1.0" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_shop.xml b/app/src/main/res/layout/activity_shop.xml index 8e57be7..3924fd7 100644 --- a/app/src/main/res/layout/activity_shop.xml +++ b/app/src/main/res/layout/activity_shop.xml @@ -52,13 +52,13 @@ + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="1.0" />