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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 33d25d7..361b5c3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,6 +24,11 @@
android:name=".ShopCreateActivity"
android:exported="true"
android:label="@string/title_activity_shop_create">
+
+
+
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
() {
+ @Override
+ public void onChanged(Account account) {
+ String name = account.getName();
+ TextView myName = (TextView) findViewById(R.id.name);
+ myName.setText(name);
+ nemophila.setName(name);
+ }
+
+ });
String uid = nemophila.getUid();
String name = nemophila.getName();
- TextView myname = (TextView) findViewById(R.id.name);
- myname.setText(name);
+ TextView myName = (TextView) findViewById(R.id.name);
+ myName.setText(name);
TextView id = (TextView) findViewById(R.id.id);
id.setText(uid);
diff --git a/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java
index 393e666..4a75d76 100644
--- a/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java
+++ b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java
@@ -1,6 +1,7 @@
package com.example.nemophila;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import android.content.Intent;
@@ -10,6 +11,7 @@
import android.widget.EditText;
import android.widget.TextView;
+import com.example.nemophila.entities.Account;
import com.example.nemophila.viewmodels.AccountViewModel;
public class MyPageEditorActivity extends AppCompatActivity {
@@ -20,7 +22,10 @@
setContentView(R.layout.activity_my_page_editor);
//AccountViewModelとの通信
AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
- EditText name = (EditText) findViewById(R.id.editName);
+ Nemophila nemophila = (Nemophila) getApplication();
+ String name = nemophila.getName();
+ EditText myName = (EditText) findViewById(R.id.editName);
+ myName.setText(name);
//MyPageに戻るボタン
Button backButton = (Button) findViewById(R.id.backMyPage);
backButton.setOnClickListener(new View.OnClickListener() {
@@ -30,6 +35,20 @@
}
});
+
+ accountViewModel.getAccountLiveData().observe(this, new Observer() {
+ @Override
+ public void onChanged(Account account) {
+ String name = account.getName();
+ TextView myName = (TextView) findViewById(R.id.name);
+ myName.setText(name);
+ nemophila.setName(name);
+ Intent intent = new Intent(MyPageEditorActivity.this, MyPageActivity.class);
+ startActivity(intent);
+ }
+
+ });
+
//変更確定ボタンを押した場合の動き
Button changeNameButton = (Button) findViewById(R.id.changeConfirm);
changeNameButton.setOnClickListener(new View.OnClickListener() {
@@ -42,7 +61,6 @@
EditText editNewPw = (EditText) findViewById(R.id.editNewPw);
String newPw = editNewPw.getText().toString();
//Nemophilaから(id)(token)をgetしてaccountViewModelに送る
- Nemophila nemophila = (Nemophila) getApplication();
String uid = nemophila.getUid();
String token = nemophila.getToken();
if(newName!=null) {
@@ -51,16 +69,12 @@
if(oldPw!=null && newPw!=null) {
accountViewModel.changePw(uid, oldPw, newPw, token);
}
-//変更確定ボタンを押した場合もMyPageに戻る
- Intent intent = new Intent(MyPageEditorActivity.this, MyPageActivity.class);
- startActivity(intent);
}
});
// 削除ボタンを押したときの処理
Button deleteAccountButton = (Button) findViewById(R.id.deleteAccount);
deleteAccountButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
- Nemophila nemophila = (Nemophila) getApplication();
String uid = nemophila.getUid();
String token = nemophila.getToken();
Intent intent = new Intent(MyPageEditorActivity.this, LoginActivity.class);
diff --git a/app/src/main/java/com/example/nemophila/PostActivity.java b/app/src/main/java/com/example/nemophila/PostActivity.java
index d932726..f0b3d2a 100644
--- a/app/src/main/java/com/example/nemophila/PostActivity.java
+++ b/app/src/main/java/com/example/nemophila/PostActivity.java
@@ -80,6 +80,8 @@
}
});
+ //コメント入力
+
diff --git a/app/src/main/java/com/example/nemophila/ShopActivity.java b/app/src/main/java/com/example/nemophila/ShopActivity.java
index add955f..53c5ff9 100644
--- a/app/src/main/java/com/example/nemophila/ShopActivity.java
+++ b/app/src/main/java/com/example/nemophila/ShopActivity.java
@@ -79,7 +79,7 @@
//PostViewModelを宣言し、LiveDataへの購読
PostsViewModel postsViewModel = new ViewModelProvider(this).get(PostsViewModel.class);
//通信テスト用データ(本来currentShopのsidをPostJsonに送る)
- postsViewModel.getShopPostJson("151347fa-2c90-44d7-ba48-f23f475b910d");
+ postsViewModel.loadShopPost("151347fa-2c90-44d7-ba48-f23f475b910d");
//LiveDataへの購読
postsViewModel.getShopPostLiveData().observe(this, new Observer>() {
@@ -91,6 +91,7 @@
PostDataModel data = new PostDataModel();
data.setName(post.getName());
data.setDate(post.getDate());
+
//intで受け取った評価を対応した星の数のStringに変換
int intRate = post.getRate();
String strRate = "";
@@ -112,7 +113,5 @@
rv.setAdapter(adapter);
}
});
-
}
-
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/ShopCreateActivity.java b/app/src/main/java/com/example/nemophila/ShopCreateActivity.java
index a0dcc9b..c1b74e3 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,37 @@
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());
+ shopCreateButton.setEnabled(false);
+ // 店の名前を入力されていないとき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/SignUpActivity.java b/app/src/main/java/com/example/nemophila/SignUpActivity.java
index c3ab931..e1f276b 100644
--- a/app/src/main/java/com/example/nemophila/SignUpActivity.java
+++ b/app/src/main/java/com/example/nemophila/SignUpActivity.java
@@ -24,11 +24,16 @@
private Retrofit retrofit;
private AccountsRest AccountsRest;
+ private Nemophila nemophila;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
+
+ //Nemophilaと連携
+ nemophila = (Nemophila) this.getApplication();
+
//通信の初期化
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
@@ -42,36 +47,45 @@
public void onClick(View view) {
//Nameとpwを入力
EditText editname = (EditText) findViewById(R.id.editTextTextUserName);
- String name = editname.getText().toString();
+ String name = editname.getText().toString().trim();
EditText editpw = (EditText) findViewById(R.id.editTextTextNewPassword);
- String pw = editpw.getText().toString();
+ String pw = editpw.getText().toString().trim();
- // 通信
- Call call = AccountsRest.createAccounts(name,pw);
+ if (!name.isEmpty() && !pw.isEmpty() && !name.trim().equals("") && !pw.trim().equals("")) {
+ // 通信
+ Call call = AccountsRest.createAccounts(name, pw);
- call.enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful()) {
- System.out.println("通信成功:changeBelongsAndMaster");
- Intent intent = new Intent(SignUpActivity.this,MainActivity.class);
- startActivity(intent);
- } else {
- System.out.println("通信可能:changeBelongsAndMaster: " + response.code());
- if (response.code() == 500){
- ((TextView) findViewById(R.id.textView)).setText("The UserName you gave is already in use.");
- }else if (response.code() == 404){
- ((TextView) findViewById(R.id.textView)).setText("SignUp failed. Please enter the correct credentials.");
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ System.out.println("通信成功:changeBelongsAndMaster");
+
+ //nemophila(自端末)にname,id,tokenを記憶
+ nemophila.setName(response.body().getName());
+ nemophila.setUid(response.body().getId());
+ nemophila.setToken(response.body().getToken());
+
+ //mainに画面遷移
+ Intent intent = new Intent(SignUpActivity.this, MainActivity.class);
+ startActivity(intent);
+ } else {
+ System.out.println("通信可能:changeBelongsAndMaster: " + response.code());
+ if (response.code() == 500) {
+ ((TextView) findViewById(R.id.textView)).setText("The UserName you gave is already in use.");
+ } else if (response.code() == 404) {
+ ((TextView) findViewById(R.id.textView)).setText("SignUp failed. Please enter the correct credentials.");
+ }
}
}
- }
- @Override
- public void onFailure(Call call, Throwable t) {
- System.out.println("通信失敗:changeBelongsAndMaster");
- System.out.println(t);
- }
- });
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println("通信失敗:changeBelongsAndMaster");
+ System.out.println(t);
+ }
+ });
+ }
}
});
//Login画面に遷移
diff --git a/app/src/main/java/com/example/nemophila/TestActivity.java b/app/src/main/java/com/example/nemophila/TestActivity.java
index c38422c..85f9381 100644
--- a/app/src/main/java/com/example/nemophila/TestActivity.java
+++ b/app/src/main/java/com/example/nemophila/TestActivity.java
@@ -1,7 +1,6 @@
package com.example.nemophila;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModelProvider;
import android.os.Bundle;
@@ -27,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);
@@ -64,7 +63,7 @@
//accountViewModel.getAccount("1111");
break;
case 2:
- postsViewModel.getShopPostJson("151347fa-2c90-44d7-ba48-f23f475b910d");
+ postsViewModel.loadShopPost("151347fa-2c90-44d7-ba48-f23f475b910d");
break;
}
}
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 dd8e411..51bd9d6 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java
@@ -48,7 +48,7 @@
//AccountのpostJsonを取得
- public void getAccountPosts(String uid) {
+ public void loadAccountPosts(String uid) {
Call> call = postsRest.getAccountPosts(uid);
call.enqueue(new Callback>() {
@Override
@@ -78,7 +78,7 @@
}
//ShopのPostJsonを取得
- public void getShopPostJson(String sid) {
+ public void loadShopPost(String sid) {
Call> call = postsRest.getShopPosts(sid);
call.enqueue(new Callback>() {
@Override
@@ -94,8 +94,6 @@
@Override
public void onFailure(Call> call, Throwable t) {
System.out.println("ShopPosts NetWorkError: " + t);
- System.out.println(t);
- //通信エラー
}
});
}
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..88282c9 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,20 +35,35 @@
// ライブデータ
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())
.build();
this.shopsRest = retrofit.create(ShopsRest.class);
+ this.ShopToMarker = new HashMap<>();
}
+ // ライブデータを返す
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 +109,7 @@
System.out.println("ステータスコード 不正 : setViewModel");
}
}
+
// 通信が失敗
@Override
public void onFailure(Call> call, Throwable t) {
@@ -101,13 +119,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);
+ }
+ });
}
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index ebbd728..1a0a7e5 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -11,6 +11,7 @@
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:visibility="gone"
tools:context=".MainActivity" />
-
+
+
+
+
diff --git a/app/src/main/res/layout/activity_post.xml b/app/src/main/res/layout/activity_post.xml
index 5e67388..cf63fe5 100644
--- a/app/src/main/res/layout/activity_post.xml
+++ b/app/src/main/res/layout/activity_post.xml
@@ -39,13 +39,14 @@
+ app:layout_constraintVertical_bias="0.195"
+ tools:ignore="SpeakableTextPresentCheck" />
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file