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 8f9d4ab..b3a7a61 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -10,6 +10,7 @@
+
@@ -17,6 +18,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fae94f7..bdefc6e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -114,11 +114,11 @@
android:name=".ShopActivity"
android:exported="true"
android:label="@string/title_activity_shop">
-
-
+
+
-
-
+
+
diff --git a/app/src/main/java/com/example/nemophila/LoginActivity.java b/app/src/main/java/com/example/nemophila/LoginActivity.java
index 5dd4b79..c3bdf20 100644
--- a/app/src/main/java/com/example/nemophila/LoginActivity.java
+++ b/app/src/main/java/com/example/nemophila/LoginActivity.java
@@ -31,11 +31,13 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
+ //Nemophilaと連携
nemophila = (Nemophila) this.getApplication();
-// if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){
-// Intent intent = new Intent(LoginActivity.this,MainActivity.class);
-// startActivity(intent);
-// }
+ //Nemophilaにtokenとuidがある場合ログイン画面をスキップ
+ if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){
+ Intent intent = new Intent(LoginActivity.this,MainActivity.class);
+ startActivity(intent);
+ }
//通信の初期化
this.retrofit = new Retrofit.Builder()
@@ -44,10 +46,11 @@
.build();
this.AccountsRest = retrofit.create(AccountsRest.class);
-
+//Loginボタンを押したとき
findViewById(R.id.LoginButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
+ //IDとpwの入力
EditText edituid = (EditText) findViewById(R.id.editTextUserID);
String uid = edituid.getText().toString();
EditText editpw = (EditText) findViewById(R.id.editTextTextNewPassword);
@@ -86,6 +89,7 @@
});
}
});
+//SignUpボタンを押したとき
findViewById(R.id.SignUp).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -93,6 +97,7 @@
startActivity(intent);
}
});
+//ForgotPasswordボタンを押したとき(処理未記入)
findViewById(R.id.ForgotPW).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
diff --git a/app/src/main/java/com/example/nemophila/MainActivity.java b/app/src/main/java/com/example/nemophila/MainActivity.java
index 2fa42ac..e50541f 100644
--- a/app/src/main/java/com/example/nemophila/MainActivity.java
+++ b/app/src/main/java/com/example/nemophila/MainActivity.java
@@ -7,7 +7,9 @@
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
+import android.app.ProgressDialog;
import android.os.Bundle;
+import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;
import android.annotation.SuppressLint;
@@ -38,9 +40,10 @@
private GoogleMap mMap;
private ActivityMainBinding binding;
- private LatLng currentLatlng;
+ private LatLng currentLatlng = null;
private LatLng testLatlng;
private LatLng testLatlng2;
+ private LatLng initialLatlng;
private GroundOverlay currentOverlay;
LocationManager locationManager;
@@ -49,8 +52,7 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- //現在地アイコンの取得
- //Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_current_location,null);
+
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
@@ -105,6 +107,12 @@
testLatlng = new LatLng(latitude, longitude);
testLatlng2 = new LatLng(34.74, 135.26);
+ //初期画面の座標(現在地をロードするまで)
+ initialLatlng = new LatLng(39,138);
+
+ //初期画面に移動
+ mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(initialLatlng, 5f));
+
//標準のマーカー(店用のピン)
setMarker(latitude, longitude);
@@ -112,9 +120,6 @@
//画像関連がわかっていないのでパス
//setIcon(latitude, longitude);
- // camera 移動 (初期画面)
- //mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, 15));
-
/*
//多分使わない
// タップした時のリスナーをセット
@@ -171,7 +176,7 @@
}
- //ピンの初期設定。完成時不要
+ //起動時から立っているピンの設定。完成時不要
private void setMarker(double latitude, double longitude){
MarkerOptions markerOptions = new MarkerOptions();
MarkerOptions markerOptions2 = new MarkerOptions();
@@ -186,7 +191,7 @@
mMap.addMarker(markerOptions2);
// ズーム
- zoomMap(latitude, longitude);
+ //zoomMap(latitude, longitude);
}
@@ -310,8 +315,15 @@
@Override
public void onLocationChanged(Location location) {
+ //初期画面は現在地を中心にするため...
+ if (currentLatlng == null){
+ zoomMap(location.getLatitude(), location.getLongitude());
+ findViewById(R.id.LL_Load).setVisibility(View.GONE);
+
+ }
+
//現在地が変更されるたびに現在地アイコンを移動
- //LatLng型で一応受け取っておく
+ //LatLng型で受け取っておく
currentLatlng = new LatLng(location.getLatitude(), location.getLongitude());
/*
diff --git a/app/src/main/java/com/example/nemophila/PostActivity.java b/app/src/main/java/com/example/nemophila/PostActivity.java
index abf9115..2875f5a 100644
--- a/app/src/main/java/com/example/nemophila/PostActivity.java
+++ b/app/src/main/java/com/example/nemophila/PostActivity.java
@@ -2,6 +2,8 @@
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
public class PostActivity extends AppCompatActivity {
@@ -9,5 +11,20 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
+
+ //評価を入力するためのプルダウン
+ ArrayAdapter rateAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item);
+ rateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+
+ rateAdapter.add("1");
+ rateAdapter.add("2");
+ rateAdapter.add("3");
+ rateAdapter.add("4");
+ rateAdapter.add("5");
+ Spinner rateSpinner = (Spinner) findViewById(R.id.inputRate);
+ rateSpinner.setAdapter(rateAdapter);
+
+
+
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/ShopActivity.java b/app/src/main/java/com/example/nemophila/ShopActivity.java
index 7ca8ca8..53c5ff9 100644
--- a/app/src/main/java/com/example/nemophila/ShopActivity.java
+++ b/app/src/main/java/com/example/nemophila/ShopActivity.java
@@ -13,35 +13,59 @@
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
+import android.widget.TextView;
import com.example.nemophila.entities.Post;
+import com.example.nemophila.entities.Shop;
import com.example.nemophila.viewmodels.PostsViewModel;
import java.util.ArrayList;
import java.util.List;
public class ShopActivity extends AppCompatActivity {
+ private ShopActivityAdapter adapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shop);
+ //NemophilaからcurrentShopを取得し店名の表示
+ //currentshopに何もないとgetNameとgetSidでアプリが落ちます
+ Shop shop;
+ String shopName;
+ String sid;
+ shop = ((Nemophila)getApplication()).getCurrentShop();
+// shopName = shop.getName();
+// sid = shop.getSid();
+ TextView nameView = (TextView) findViewById(R.id.shopName);
+ //テスト用に仮店名でセット
+ nameView.setText("お店A");
+// nameView.setText(shopName);
+
//右上のボタンで投稿画面(PostActivity)へ遷移
- Button buttonToPost = (Button)findViewById(R.id.buttonToPostActivity);
- buttonToPost.setOnClickListener(new View.OnClickListener(){
+ Button toPostButton = (Button)findViewById(R.id.toPostAcButton);
+ toPostButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent intent = new Intent(getApplication(), PostActivity.class);
startActivity(intent);
}
});
+ //左上のボタンでメイン画面へ遷移
+ Button returnButton = (Button)findViewById(R.id.shopAcReturnButton);
+ returnButton.setOnClickListener(new View.OnClickListener(){
+ public void onClick(View v){
+ Intent intent = new Intent(getApplication(), MainActivity.class);
+ startActivity(intent);
+ }
+ });
+
List postsDataset = new ArrayList<>();
-
- //RecyclerView
+ //RecyclerView(表示以外の設定)
RecyclerView rv = (RecyclerView) findViewById(R.id.postsList);
- ShopActivityAdapter adapter = new ShopActivityAdapter(postsDataset);
+ adapter = new ShopActivityAdapter(postsDataset);
LinearLayoutManager llm = new LinearLayoutManager(this);
@@ -52,20 +76,23 @@
rv.setHasFixedSize(true);
rv.setLayoutManager(llm);
- //通信テスト
+ //PostViewModelを宣言し、LiveDataへの購読
PostsViewModel postsViewModel = new ViewModelProvider(this).get(PostsViewModel.class);
- postsViewModel.getShopPostJson("151347fa-2c90-44d7-ba48-f23f475b910d");
+ //通信テスト用データ(本来currentShopのsidをPostJsonに送る)
+ postsViewModel.loadShopPost("151347fa-2c90-44d7-ba48-f23f475b910d");
//LiveDataへの購読
postsViewModel.getShopPostLiveData().observe(this, new Observer>() {
- //private List members;
@Override
public void onChanged(List ShopPosts) {
+ //postsDatasetを一旦クリアし、LiveDataから受け取ったデータを一つずつセット
postsDataset.clear();
for (Post post: ShopPosts){
PostDataModel data = new PostDataModel();
data.setName(post.getName());
data.setDate(post.getDate());
+
+ //intで受け取った評価を対応した星の数のStringに変換
int intRate = post.getRate();
String strRate = "";
for (int i = 0; i < 5; i++){
@@ -80,33 +107,11 @@
data.setComment(post.getComment());
postsDataset.add(data);
- System.out.println("hogehoge");
-
- //recyclerViewをonChangedが呼ばれるたび表示
- rv.setAdapter(adapter);
-
}
+ //RecyclerViewをonChangedが呼ばれるたび表示
+ adapter.setList(postsDataset);
+ rv.setAdapter(adapter);
}
});
-
-
-
- }
-
- private List kariDataset() {
-
- //RecyclerViewの中身の仮データ
- List dataset = new ArrayList<>();
- for (int i = 0; i < 50; i++) {
- PostDataModel data = new PostDataModel();
- data.setName("ネモフィラ 太郎" + i + "号");
- data.setDate("yyyy/mm/dd");
- data.setRate("★★★★★");
- data.setGenre("ラーメン, 中華, おいしい, 安い");
- data.setComment("おいしかった。");
-
- dataset.add(data);
- }
- return dataset;
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/ShopActivityAdapter.java b/app/src/main/java/com/example/nemophila/ShopActivityAdapter.java
index 8c3b5ce..d41d4ac 100644
--- a/app/src/main/java/com/example/nemophila/ShopActivityAdapter.java
+++ b/app/src/main/java/com/example/nemophila/ShopActivityAdapter.java
@@ -11,12 +11,18 @@
public class ShopActivityAdapter extends RecyclerView.Adapter {
- public List list;
+
+ private List list;
public ShopActivityAdapter(List list) {
this.list =list;
}
+ public void setList(List list) {
+ this.list = list;
+ }
+
+
@NonNull
@Override
public PostsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
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/SignUpActivity.java b/app/src/main/java/com/example/nemophila/SignUpActivity.java
index 0b1aa70..c3ab931 100644
--- a/app/src/main/java/com/example/nemophila/SignUpActivity.java
+++ b/app/src/main/java/com/example/nemophila/SignUpActivity.java
@@ -36,10 +36,11 @@
.build();
this.AccountsRest = retrofit.create(AccountsRest.class);
-
+//アカウント新規製作
findViewById(R.id.SignUpButton).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
+ //Nameとpwを入力
EditText editname = (EditText) findViewById(R.id.editTextTextUserName);
String name = editname.getText().toString();
EditText editpw = (EditText) findViewById(R.id.editTextTextNewPassword);
@@ -73,5 +74,13 @@
});
}
});
+//Login画面に遷移
+ findViewById(R.id.LoginTrans).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(SignUpActivity.this,LoginActivity.class);
+ startActivity(intent);
+ }
+ });
}
}
\ 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 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/resources/AccountsRest.java b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java
index fb95de5..20af87c 100644
--- a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java
+++ b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java
@@ -2,15 +2,14 @@
//import android.accounts.Account;
-import com.example.nemophila.entities.Account;
import com.example.nemophila.entities.AccountJson;
-import com.example.nemophila.entities.Post;
+import com.example.nemophila.entities.PostJson;
import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import retrofit2.Call;
+import retrofit2.Response;
import retrofit2.http.DELETE;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
@@ -31,7 +30,7 @@
);
@GET("accounts/{uid}")
- Call getAccount(
+ Call getAccount(
@Path("uid") String uid
);
@@ -65,7 +64,7 @@
);
@GET("accounts/{uid}/posts")
- Call> getAccountPosts(
+ Call> getAccountPosts(
@Path("uid") String uid
);
diff --git a/app/src/main/java/com/example/nemophila/resources/PostsRest.java b/app/src/main/java/com/example/nemophila/resources/PostsRest.java
index 1791bd4..bf4aa98 100644
--- a/app/src/main/java/com/example/nemophila/resources/PostsRest.java
+++ b/app/src/main/java/com/example/nemophila/resources/PostsRest.java
@@ -29,7 +29,7 @@
);
@GET("accounts/{uid}/posts")
- Call> getAccountPosts(
+ Call> getAccountPosts(
@Path("uid") String uid
);
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 56add7a..01f32f2 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java
@@ -1,12 +1,15 @@
package com.example.nemophila.viewmodels;
import com.example.nemophila.entities.Account;
+import com.example.nemophila.entities.AccountJson;
import com.example.nemophila.entities.Post;
+import com.example.nemophila.entities.PostJson;
import com.example.nemophila.resources.AccountsRest;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
+import java.util.ArrayList;
import java.util.Collection;
import retrofit2.Call;
@@ -19,6 +22,7 @@
// フィールド
private final Retrofit retrofit;
private final AccountsRest accountsRest;
+
// ライブデータ
private final MutableLiveData accountLiveData;
private final MutableLiveData> accountPostsLiveData;
@@ -35,30 +39,44 @@
}
// ライブデータの取得(ゲッター)
- public MutableLiveData getAccountLiveData() {
- return accountLiveData;
- }
+ public MutableLiveData getAccountLiveData() { return accountLiveData; }
public MutableLiveData> getAccountPostsLiveData() { return accountPostsLiveData; }
- // 対象のアカウント情報の取得
- public Account getAccount(String uid) {
- Call call = accountsRest.getAccount(uid);
+ //AccountJsonからAccountを作成し,対象のライブデータに設定する
+ private void setAccountLiveDataFromJson(AccountJson accountJson) {
+ Account account = new Account(accountJson);
+ accountLiveData.setValue(account);
+ }
- call.enqueue(new Callback() {
+ //PostJsonからPostを作成し,対象のライブデータに設定する
+ private void setAccountPostLiveDataFromJson(Collection postJson) {
+ ArrayList posts = new ArrayList<>();
+ for(PostJson i: postJson) {
+ Post post = new Post(i);
+ posts.add(post);
+ }
+ accountPostsLiveData.setValue(posts);
+ }
+
+ // 対象のアカウント情報の取得
+ public void getAccount(String uid) {
+ Call call = accountsRest.getAccount(uid);
+
+ call.enqueue(new Callback() {
@Override
- public void onResponse(Call call, Response response) {
+ public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
- accountLiveData.setValue(response.body());
+ AccountJson accountJson = response.body();
+ setAccountLiveDataFromJson(accountJson);
} else {
System.out.println("response error");
}
}
@Override
- public void onFailure(Call call, Throwable t) {
+ public void onFailure(Call call, Throwable t) {
System.out.println("correspondence error");
}
});
- return null;
}
// 対象のアカウント情報の削除
@@ -123,19 +141,20 @@
// 対象のアカウントがした投稿の全取得
public void getAccountPosts(String uid) {
- Call> call = accountsRest.getAccountPosts(uid);
+ Call> call = accountsRest.getAccountPosts(uid);
- 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()) {
- accountPostsLiveData.setValue(response.body());
+ Collection postJson = response.body();
+ setAccountPostLiveDataFromJson(postJson);
} else {
System.out.println("response error");
}
}
@Override
- public void onFailure(Call> call, Throwable t) {
+ public void onFailure(Call> call, Throwable t) {
System.out.println("correspondence error");
}
});
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 37e7985..51bd9d6 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/PostsViewModel.java
@@ -22,7 +22,6 @@
//Field
final private Retrofit retrofit;
final private PostsRest postsRest;
- private String pid;
//LiveData
final private MutableLiveData> accountPostsLiveData;
@@ -37,7 +36,6 @@
.addConverterFactory(JacksonConverterFactory.create())
.build();
this.postsRest = retrofit.create(PostsRest.class);
- this.pid = null;
}
//getter
@@ -48,62 +46,39 @@
return this.shopPostsLiveData;
}
- //API通信メソッド
- public void getAccountPosts(String uid) {
- Call> call = postsRest.getAccountPosts(uid);
- call.enqueue(new Callback>() {
+
+ //AccountのpostJsonを取得
+ public void loadAccountPosts(String uid) {
+ Call> call = postsRest.getAccountPosts(uid);
+ call.enqueue(new Callback>() {
@Override
- public void onResponse(Call> call, Response> response) {
+ public void onResponse(Call> call, Response> response) {
if (response.isSuccessful()) {
- accountPostsLiveData.setValue(response.body());
+ setAccountPostLiveData(response.body());
} else {
- //レスポンスエラーを通知
+ System.out.println("AccountPosts ResponseError");
}
}
@Override
- public void onFailure(Call> call, Throwable t) {
- //通信エラーを通知
+ public void onFailure(Call> call, Throwable t) {
+ System.out.println("AccountPosts NetWorkError: " + t);
}
});
}
- //投稿作成
- public String createPost(String uid, String token, String sid,
- String rate, String genre, String comment,
- String image1, String image2, String image3) {
- Call call = postsRest.postAccountPost(uid ,token, sid, rate, genre, comment, image1, image2, image3);
-
- call.enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful()) {
- pid = response.body();
- } else {
- //レスポンスエラーを通知
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable t) {
- //通信エラーを通知
- }
- });
- return pid;
- }
-
//PostJsonからPostを作成し,それをLiveDataにセット
- private void setShopPostLiveData(ArrayList postJson) {
+ private void setAccountPostLiveData(Collection postJson) {
ArrayList posts = new ArrayList<>();
- for(PostJson i: postJson) {
- Post post = new Post(i);
+ for(PostJson pj: postJson) {
+ Post post = new Post(pj);
posts.add(post);
}
- shopPostsLiveData.setValue(posts);
+ accountPostsLiveData.setValue(posts);
}
- //PostJsonを取得
- public void getShopPostJson(String sid) {
+ //ShopのPostJsonを取得
+ public void loadShopPost(String sid) {
Call> call = postsRest.getShopPosts(sid);
call.enqueue(new Callback>() {
@Override
@@ -112,15 +87,45 @@
ArrayList postJson = response.body();
setShopPostLiveData(postJson);
} else {
- //レスポンスエラー
+ System.out.println("ShopPosts ResponseError");
}
}
@Override
public void onFailure(Call> call, Throwable t) {
- System.out.println("networkError");
- System.out.println(t);
- //通信エラー
+ System.out.println("ShopPosts NetWorkError: " + t);
+ }
+ });
+ }
+ //PostJsonからPostを作成し,それをLiveDataにセット
+ private void setShopPostLiveData(ArrayList postJson) {
+ ArrayList posts = new ArrayList<>();
+ for(PostJson pj: postJson) {
+ Post post = new Post(pj);
+ posts.add(post);
+ }
+ shopPostsLiveData.setValue(posts);
+ }
+
+ //投稿作成
+ public void createPost(String uid, String token, String sid,
+ String rate, String genre, String comment,
+ String image1, String image2, String image3) {
+ Call call = postsRest.postAccountPost(uid ,token, sid, rate, genre, comment, image1, image2, image3);
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ System.out.println("Success CreatePost" + response.body());
+ } else {
+ System.out.println("CreatePosts ResponseError");
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println("CreatePosts NetWorkError: " + 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 dc29d57..94ffebd 100644
--- a/app/src/main/res/layout/activity_post.xml
+++ b/app/src/main/res/layout/activity_post.xml
@@ -1,10 +1,66 @@
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
\ 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 57ac42b..394e0cc 100644
--- a/app/src/main/res/layout/activity_shop.xml
+++ b/app/src/main/res/layout/activity_shop.xml
@@ -8,40 +8,56 @@
+ app:layout_constraintVertical_bias="0.047" />
+ app:layout_constraintVertical_bias="0.025" />
+
+
+ app:layout_constraintVertical_bias="0.576" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_sign_up.xml b/app/src/main/res/layout/activity_sign_up.xml
index ff65596..261ee26 100644
--- a/app/src/main/res/layout/activity_sign_up.xml
+++ b/app/src/main/res/layout/activity_sign_up.xml
@@ -47,4 +47,13 @@
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextNewPassword" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d95b0d2..504a6fe 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -17,5 +17,6 @@
SignUp
UserID
Forgot Password?
+ Button
\ No newline at end of file