diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index cf4f8bc..e5a6c5f 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -7,11 +7,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9194c63..b3a7a61 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -10,6 +10,7 @@
+
diff --git a/app/src/main/java/com/example/nemophila/ShopCreateActivity.java b/app/src/main/java/com/example/nemophila/ShopCreateActivity.java
index a0dcc9b..51a7ed0 100644
--- a/app/src/main/java/com/example/nemophila/ShopCreateActivity.java
+++ b/app/src/main/java/com/example/nemophila/ShopCreateActivity.java
@@ -1,11 +1,20 @@
package com.example.nemophila;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.ViewModelProvider;
import android.content.Intent;
import android.os.Bundle;
+import android.view.Gravity;
import android.view.View;
import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
+
+import com.example.nemophila.entities.Shop;
+import com.example.nemophila.viewmodels.ShopsViewModel;
+
+import java.io.IOException;
public class ShopCreateActivity extends AppCompatActivity {
@@ -14,18 +23,36 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shop_create);
+ Nemophila nemophila = (Nemophila) this.getApplication();
- // お店の名前を取得
+ // ShopsViewModelにアクセス
+ ShopsViewModel shopsViewModel = new ViewModelProvider(this).get(ShopsViewModel.class);
- //右下のボタンでShopActivityへ遷移
- //sidを発行してピンを立てたい
- Button shopCreateButton = (Button)findViewById(R.id.buttonShopCreate);
- shopCreateButton.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- Intent intent = new Intent(getApplication(), ShopActivity.class);
- startActivity(intent);
- }
+ // LiveDataへの購読
+ shopsViewModel.getCurrentLiveData().observe(this, shop -> {
+ // ShopActivityでどこの店についての投稿かを管理できるように更新する
+ nemophila.setCurrentShop(shop);
+
+ // ShopActivityへ画面遷移する
+ Intent intent = new Intent(getApplication(), ShopActivity.class);
+ startActivity(intent);
});
+ // 店の名前が入力されていればsidを発行し、新しくShopを生成
+ Button shopCreateButton = findViewById(R.id.buttonShopCreate);
+ shopCreateButton.setOnClickListener(v -> {
+ EditText nameTextBox = findViewById(R.id.editTextShopCreate);
+ String name = nameTextBox.getText().toString();
+
+ // 店の名前を入力されているときのみ処理を行う
+ if (!name.equals("")) {
+ shopsViewModel.createShop(name, nemophila.getCurrentLongitude(), nemophila.getCurrentLatitude());
+ // 店の名前を入力されていないときToastを発行
+ } else {
+ Toast ts = Toast.makeText(ShopCreateActivity.this, "名前を入力してください", Toast.LENGTH_SHORT);
+ ts.setGravity(Gravity.CENTER, 0, 0);
+ ts.show();
+ }
+ });
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/TestActivity.java b/app/src/main/java/com/example/nemophila/TestActivity.java
index f299ae1..85f9381 100644
--- a/app/src/main/java/com/example/nemophila/TestActivity.java
+++ b/app/src/main/java/com/example/nemophila/TestActivity.java
@@ -26,7 +26,7 @@
Nemophila nemophila = (Nemophila) this.getApplication();
//テスト用ViewModel(ViewModelが増えた場合はここで準備。spinnerItemに名前も追加すること)
- //RoomViewModelへのアクセス
+ //ViewModelへのアクセス
ShopsViewModel shopsViewModel = new ViewModelProvider(this).get(ShopsViewModel.class);
AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
PostsViewModel postsViewModel = new ViewModelProvider(this).get(PostsViewModel.class);
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 23a04cb..c171e1e 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java
@@ -8,6 +8,8 @@
import com.example.nemophila.resources.ShopsRest;
import com.google.android.gms.maps.model.Marker;
+import java.io.IOError;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -33,10 +35,12 @@
// ライブデータ
final private MutableLiveData> shopsLiveData;
+ final private MutableLiveData currentShopLiveData;
// コンストラクタ
public ShopsViewModel() {
this.shopsLiveData = new MutableLiveData<>();
+ this.currentShopLiveData = new MutableLiveData<>();
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
.addConverterFactory(JacksonConverterFactory.create())
@@ -44,9 +48,21 @@
this.shopsRest = retrofit.create(ShopsRest.class);
}
+ // ライブデータを返す
public LiveData> getShopsLiveData() {
return this.shopsLiveData;
}
+ public LiveData getCurrentLiveData() { return this.currentShopLiveData; }
+
+ // ShopToMarkerに新しく店と地図上のピンを紐づける
+ public void setShopAndMarker(Shop shop, Marker marker) {
+ ShopToMarker.put(shop, marker);
+ }
+
+ // 店に紐づいたピンを返す
+ public Marker getMarker(Shop shop) {
+ return ShopToMarker.get(shop);
+ }
@Override
public void update() {
@@ -92,6 +108,7 @@
System.out.println("ステータスコード 不正 : setViewModel");
}
}
+
// 通信が失敗
@Override
public void onFailure(Call> call, Throwable t) {
@@ -101,13 +118,22 @@
});
}
- // ShopToMarkerに新しく店と地図上のピンを紐づける
- public void setShopAndMarker(Shop shop, Marker marker) {
- ShopToMarker.put(shop, marker);
- }
+ public void createShop(String name, double longitude, double latitude) {
+ Call call = shopsRest.createShop(name, longitude, latitude);
- // 店に紐づいたピンを返す
- public Marker getMarker(Shop shop) {
- return ShopToMarker.get(shop);
+ 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);
+ }
+ });
}
}