diff --git a/.idea/misc.xml b/.idea/misc.xml index 432cce0..c94d993 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -9,6 +9,9 @@ + + + diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java index aa88095..1ee5dd6 100644 --- a/app/src/main/java/com/example/nemophila/MapsFragment.java +++ b/app/src/main/java/com/example/nemophila/MapsFragment.java @@ -9,6 +9,7 @@ import androidx.core.content.res.ResourcesCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import android.Manifest; @@ -29,9 +30,11 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; +import android.widget.TextView; import android.widget.Toast; import com.example.nemophila.databinding.ActivityMainBinding; +import com.example.nemophila.entities.Post; import com.example.nemophila.entities.Shop; import com.example.nemophila.viewmodels.FriendViewModel; import com.example.nemophila.viewmodels.PostsViewModel; @@ -51,6 +54,7 @@ import com.google.android.gms.maps.model.MarkerOptions; import com.google.common.collect.Maps; +import java.util.ArrayList; import java.util.Map; public class MapsFragment extends Fragment implements LocationListener { @@ -72,7 +76,7 @@ private Marker currentMarker; private BitmapDescriptor bd; private boolean isLongClick; - private + LocationManager locationManager; @@ -89,6 +93,7 @@ friendViewModel = new ViewModelProvider(getActivity()).get(FriendViewModel.class); postsViewModel = new ViewModelProvider(getActivity()).get(PostsViewModel.class); + //フレンドの更新が入った時の処理(LiveDataへの購読) friendViewModel.getFriends(nemophila.getUid()); friendViewModel.getFriendsLiveData().observe(getActivity(), friends -> { @@ -100,6 +105,8 @@ nemophila.setFriends(friends); }); + + // 店情報の更新が入った時の処理(LiveDataへの購読) shopsViewModel.getShopsLiveData().observe(getActivity(), shops -> { Toast.makeText(getActivity(), @@ -109,6 +116,32 @@ for (Shop shop : shops) { //受け取ったshopsにfriendsの投稿が含まれているかを確認,受け取ったshopsに対してMarkerが立っているかを確認 + + //observeの中にobserveはうまくいかなかった +// postsViewModel.loadShopPost(shop.getSid()); +// postsViewModel.getShopPostLiveData().observe(getActivity(), new Observer >() { +// @Override +// public void onChanged(ArrayList posts) { +// ArrayList ids = postsViewModel.getUserIds(); +// +// for(int i = 0; i < ids.size(); i++) { +// ArrayList fids = nemophila.getFriendIds(); +// for(int j = 0; j < fids.size(); j++) { +// if( ( ids.get(i).equals(fids.get(j)) || ids.get(i).equals(nemophila.getUid()) ) && 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); +// } +// } +// } +// } +// }); + if ( shopsViewModel.getMarker(shop) == null) { //フレンド以外の投稿のピンも立てたい場合 //if( && shopsViewModel.getMarker(shop) == null) { diff --git a/app/src/main/java/com/example/nemophila/Nemophila.java b/app/src/main/java/com/example/nemophila/Nemophila.java index a41a04d..00a9120 100644 --- a/app/src/main/java/com/example/nemophila/Nemophila.java +++ b/app/src/main/java/com/example/nemophila/Nemophila.java @@ -8,6 +8,7 @@ import com.example.nemophila.entities.Shop; import com.google.type.LatLng; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -198,4 +199,12 @@ public void removeFavoriteFriends(String favoriteFriend){ this.favoriteFriends.remove(favoriteFriend); } + public ArrayList getFriendIds() { + ArrayList friendIds = new ArrayList<>(); + for(AccountNameJson anj: friends) { + friendIds.add(anj.getUid()); + } + return friendIds; + } + }