diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 8666e4b..eac51cb 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 b0f64b7..f8e994f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -18,12 +18,11 @@
-
+
-
-
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 467c560..ae0c403 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,7 +5,7 @@
-
+
-
+ android:usesCleartextTraffic="true"
+ tools:targetApi="31">
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
+
-
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
diff --git a/app/src/main/java/com/example/nemophila/MyPageActivity.java b/app/src/main/java/com/example/nemophila/MyPageActivity.java
index 2bd208b..ed666bd 100644
--- a/app/src/main/java/com/example/nemophila/MyPageActivity.java
+++ b/app/src/main/java/com/example/nemophila/MyPageActivity.java
@@ -3,6 +3,8 @@
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.os.Bundle;
@@ -10,25 +12,27 @@
import android.widget.Button;
import android.widget.TextView;
-import com.example.nemophila.FriendActivity;
-import com.example.nemophila.MainActivity;
-import com.example.nemophila.MyPageEditorActivity;
-import com.example.nemophila.R;
-import com.example.nemophila.RequestedActivity;
-import com.example.nemophila.entities.Account;
import com.example.nemophila.entities.Post;
import com.example.nemophila.viewmodels.AccountViewModel;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
public class MyPageActivity extends AppCompatActivity {
-//MyPageActivity画面の作成
+ //MyPageActivity画面の作成
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mypage);
Nemophila nemophila = (Nemophila) getApplication();
+ String uid = nemophila.getUid();
+ String name = nemophila.getName();
+ TextView myName = (TextView) findViewById(R.id.name);
+ myName.setText(name);
+ TextView id = (TextView) findViewById(R.id.id);
+ id.setText(uid);
// 「閉じる」ボタンを押したときにメイン画面へ遷移する
Button cancelButton = (Button) findViewById(R.id.cancel);
@@ -68,7 +72,7 @@
});
- //AccountViewModelとの通信とテキストの表示
+ //getNameLiveDataとの通信により今のユーザーネームを表示する
AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
accountViewModel.getNameLiveData().observe(this, new Observer () {
@Override
@@ -78,23 +82,58 @@
nemophila.setName(name);
}
});
- String uid = nemophila.getUid();
- String name = nemophila.getName();
- TextView myName = (TextView) findViewById(R.id.name);
- myName.setText(name);
- TextView id = (TextView) findViewById(R.id.id);
- id.setText(uid);
+ /* ここからよくわかっていない */
+ RecyclerView rv = (RecyclerView) findViewById(R.id.postsList);
+ LinearLayoutManager llm = new LinearLayoutManager(this);
+ List postsDataset = new ArrayList<>();
+ MyPageActivityAdapter adapter = new MyPageActivityAdapter(postsDataset);
+
+ rv.setHasFixedSize(true);
+ rv.setLayoutManager(llm);
+ rv.setAdapter(adapter);
+
+ accountViewModel.getAccountPostsLiveData().observe(this, new Observer >() {
+ @Override
+ public void onChanged(Collection Posts) {
+ //postsDatasetを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
+ postsDataset.clear();
+ for (Post post: Posts){
+ PostDataModel data = new PostDataModel();
+ data.setName(post.getName());
+ data.setDate(post.getDate());
+ //rateはintで受け取った評価に対応した星の数のStringに変換してセット
+ int intRate = post.getRate();
+ String strRate = "";
+ for (int i = 0; i < 5; i++){
+ if(intRate > i ){
+ strRate += "★";
+ }else{
+ strRate += "☆";
+ }
+ }
+ data.setRate(strRate);
+ data.setGenre(post.getGenre());
+ data.setComment(post.getComment());
+
+ postsDataset.add(data);
+ }
+ //RecyclerViewをonChangedが呼ばれるたび表示(アダプターを更新してRecyclerViewにセット)
+ adapter.setList(postsDataset);
+ rv.setAdapter(adapter);
+ }
+ });
}
- protected void onResume(Bundle savedInstanceState) {
+
+// protected void onResume(Bundle savedInstanceState) {
// super.onResume(savedInstanceState);
-
- Nemophila nemophila = (Nemophila) getApplication();
- String uid = nemophila.getUid();
- String name = nemophila.getName();
- TextView myName = (TextView) findViewById(R.id.name);
- myName.setText(name);
- TextView id = (TextView) findViewById(R.id.id);
- id.setText(uid);
- }
-}
\ No newline at end of file
+//
+// Nemophila nemophila = (Nemophila) getApplication();
+// String uid = nemophila.getUid();
+// String name = nemophila.getName();
+// 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/MyPageActivityAdapter.java b/app/src/main/java/com/example/nemophila/MyPageActivityAdapter.java
index b8651d1..6af5422 100644
--- a/app/src/main/java/com/example/nemophila/MyPageActivityAdapter.java
+++ b/app/src/main/java/com/example/nemophila/MyPageActivityAdapter.java
@@ -12,6 +12,10 @@
private List list;
+ public void setList(List list) {
+ this.list = list;
+ }
+
public MyPageActivityAdapter(List list) {
this.list = list;
}
diff --git a/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java
index 21bb79e..6301b5d 100644
--- a/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java
+++ b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java
@@ -6,10 +6,12 @@
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.TextView;
+import android.widget.Toast;
import com.example.nemophila.entities.Account;
import com.example.nemophila.viewmodels.AccountViewModel;
@@ -21,7 +23,7 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_page_editor);
- //AccountViewModelとの通信
+ //LiveDataへの購読
AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
Nemophila nemophila = (Nemophila) getApplication();
String name = nemophila.getName();
@@ -36,18 +38,17 @@
startActivity(intent);
}
});
-
+ //LiveDataへの購読
accountViewModel.getNameLiveData().observe(this, new Observer() {
@Override
public void onChanged(String name) {
TextView myName = (TextView) findViewById(R.id.editName);
myName.setText(name);
nemophila.setName(name);
- Intent intent = new Intent(MyPageEditorActivity.this, MyPageActivity.class);
- startActivity(intent);
}
});
+ //LiveDataへの購読
accountViewModel.getPwLiveData().observe(this, new Observer() {
@Override
public void onChanged(String Pw) {
@@ -56,6 +57,16 @@
}
});
+ //LiveDataへの購読
+ accountViewModel.getPwErrorLiveData().observe(this, new Observer() {
+ @Override
+ public void onChanged(String name) {
+ Toast ts = Toast.makeText(MyPageEditorActivity.this, "パスワードが間違っています", Toast.LENGTH_SHORT);
+ ts.setGravity(Gravity.CENTER, 0, 0);
+ ts.show();
+ }
+
+ });
//変更確定ボタンを押した場合の動き
Button changeNameButton = (Button) findViewById(R.id.changeConfirm);
diff --git a/app/src/main/java/com/example/nemophila/Nemophila.java b/app/src/main/java/com/example/nemophila/Nemophila.java
index 887d607..b48eb3c 100644
--- a/app/src/main/java/com/example/nemophila/Nemophila.java
+++ b/app/src/main/java/com/example/nemophila/Nemophila.java
@@ -31,7 +31,7 @@
//フィルターのデータ
private HashSet selectGenres = new HashSet<>();
- private HashSet selectFriends = new HashSet<>();
+ private HashSet selectFriends = new HashSet<>();
//Account関連のGetter
public String getName() {
@@ -97,7 +97,7 @@
public HashSet getSelectGenres() {
return selectGenres;
}
- public HashSet getSelectFriends() {
+ public HashSet getSelectFriends() {
return selectFriends;
}
@@ -158,7 +158,7 @@
public void setSelectGenres(String selectGenre) {
this.selectGenres.add(selectGenre);
}
- public void setSelectFriends(Account selectFriend) {
+ public void setSelectFriends(String selectFriend) {
this.selectFriends.add(selectFriend);
}
@@ -166,7 +166,7 @@
public void removeSelectGenres(String selectGenre){
this.selectGenres.remove(selectGenre);
}
- public void removeSelectFriends(Account selectFriend) {
+ public void removeSelectFriends(String selectFriend) {
this.selectFriends.remove(selectFriend);
}
}
diff --git a/app/src/main/java/com/example/nemophila/PostActivity.java b/app/src/main/java/com/example/nemophila/PostActivity.java
index f0b3d2a..6282a6f 100644
--- a/app/src/main/java/com/example/nemophila/PostActivity.java
+++ b/app/src/main/java/com/example/nemophila/PostActivity.java
@@ -1,6 +1,7 @@
package com.example.nemophila;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.ViewModelProvider;
import android.content.Intent;
import android.os.Bundle;
@@ -8,29 +9,79 @@
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
+import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
+
+import com.example.nemophila.entities.Account;
+import com.example.nemophila.entities.Shop;
+import com.example.nemophila.viewmodels.PostsViewModel;
+import com.example.nemophila.viewmodels.ShopsViewModel;
+import com.google.android.material.snackbar.Snackbar;
+
+import retrofit2.Retrofit;
+
+
public class PostActivity extends AppCompatActivity {
private String pid;
private String uid;
private String name;
private String genre;
- private String date;
private int rate;
private String comment;
+ private String token;
+ private String sid;
+ private String img1 = null;
+ private String img2 = null;
+ private String img3 = null;
+ private String shopName;
+
+ private PostsViewModel postsViewModel;
+ private ShopsViewModel shopsViewModel;
+ private Account account;
+ private Retrofit retrofit;
+ private Nemophila nemophila;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
+ Shop shop;
+ nemophila = (Nemophila) this.getApplication();
+ postsViewModel = new ViewModelProvider(this).get(PostsViewModel.class);
+ shopsViewModel = new ViewModelProvider(this).get(ShopsViewModel.class);
+
+ uid = nemophila.getUid();
+ token = nemophila.getToken();
+ shop = nemophila.getCurrentShop();
+
+ if (shop == null){
+ Shop dummyShop = nemophila.getDummyShop();
+ sid = dummyShop.getSid();
+ shopName = dummyShop.getName();
+ }else{
+ sid = shop.getSid();
+ shopName = shop.getName();
+ }
+
+
+ //店名を表示
+ TextView textView = findViewById(R.id.shopNamePoatAc);
+ textView.setText(shopName);
+
+
//左上のボタンでキャンセル(ShopActivityに戻る)
//確認用ダイアログを入れたい
Button returnButton = (Button)findViewById(R.id.postAcReturnButton);
returnButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
- Intent intent = new Intent(getApplication(), ShopActivity.class);
+ //キャンセル時にリセット
+ nemophila.setDummyShop(null);
+ nemophila.setCurrentShop(null);
+ //画面遷移
+ Intent intent = new Intent(getApplication(), MainActivity.class);
startActivity(intent);
}
});
@@ -74,21 +125,61 @@
}
TextView rateView = (TextView) findViewById(R.id.ratePostAc);
rateView.setText(displayRate);
+ }else if (gettedRate.equals("評価を選択")){
+ rate = 0;
}
// System.out.println(gettedRate);
// System.out.println(rate);
}
});
+
//コメント入力
+ Button selectPictureButton = (Button)findViewById(R.id.selectpicturebutton);
+ selectPictureButton.setOnClickListener(new View.OnClickListener(){
+ public void onClick(View v) {
+ //画像選択(3枚)
+// final int maxNumPhotosAndVideos = 10;
+// Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
+// intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNumPhotosAndVideos);
+// startActivityForResult(intent, PHOTO_PICKER_MULTI_SELECT_REQUEST_CODE);
+ }
+ });
+ //投稿ボタンの処理
+ Button postButton = (Button)findViewById(R.id.postButton);
+ postButton.setOnClickListener(new View.OnClickListener(){
+ public void onClick(View v){
+ System.out.println("投稿ボタンのクリック");
+
+ EditText editGenre = (EditText) findViewById(R.id.inputGenre);
+ genre = editGenre.getText().toString();
+
+ EditText editComment = (EditText) findViewById(R.id.inputComment);
+ comment = editComment.getText().toString();
+ //評価が未入力の時
+ if(rate == 0) {
+ System.out.println("評価未設定クリック");
+ Snackbar.make(v, "評価を入力してください", Snackbar.LENGTH_SHORT).show();
+// Intent intent = new Intent(getApplication(), ShopActivity.class);
+// startActivity(intent);
+ } else {
+ //評価入力済の時
+ shopsViewModel.createShop(shopName, nemophila.getCurrentLongitude(), nemophila.getCurrentLatitude());
+ postsViewModel.createPost(uid, token, sid, rate, genre, comment, img1, img2, img3);
+ //投稿時にリセット
+ nemophila.setDummyShop(null);
+ nemophila.setCurrentShop(null);
-
-
+ Intent intent = new Intent(getApplication(), MainActivity.class);
+ startActivity(intent);
+ }
+ }
+ });
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/example/nemophila/RequestingActivity.java b/app/src/main/java/com/example/nemophila/RequestingActivity.java
new file mode 100644
index 0000000..6214a8e
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/RequestingActivity.java
@@ -0,0 +1,14 @@
+package com.example.nemophila;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+
+public class RequestingActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_requesting);
+ }
+}
\ 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 0053f0a..bd9b992 100644
--- a/app/src/main/java/com/example/nemophila/ShopActivity.java
+++ b/app/src/main/java/com/example/nemophila/ShopActivity.java
@@ -15,11 +15,13 @@
import android.widget.Button;
import android.widget.TextView;
+import com.example.nemophila.entities.Account;
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.HashSet;
import java.util.List;
public class ShopActivity extends AppCompatActivity {
@@ -97,28 +99,77 @@
postsViewModel.getShopPostLiveData().observe(this, new Observer>() {
@Override
public void onChanged(List ShopPosts) {
+
+ //Nemophilaから選択中のジャンルを受け取る
+// 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から選択中のフレンドを受け取る
+// HashSet selectingFriend = ((Nemophila)getApplication()).getSelectFriends();
+
+ //テスト用にHashSetにフレンドを入力
+ HashSet selectingFriend = new HashSet<>();
+ selectingFriend.add("1111");
+ selectingFriend.add("1113");
+
+ //選択したフレンドの表示のための宣言
+ HashSet selectingFriendName = new HashSet<>();
+
//postsDatasetを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
postsDataset.clear();
+
for (Post post: ShopPosts){
+ //dataを宣言 dataに投稿の必要なデータをセットし、それをpostsDatasetに追加してリストを作る
PostDataModel data = new PostDataModel();
- data.setName(post.getName());
- data.setDate(post.getDate());
- //rateはintで受け取った評価に対応した星の数のStringに変換してセット
- int intRate = post.getRate();
- String strRate = "";
- for (int i = 0; i < 5; i++){
- if(intRate > i ){
- strRate += "★";
- }else{
- strRate += "☆";
+ //フィルター選択中かの判定のためにgenreとuidを先に読み込む
+ String genre = post.getGenre();
+ String uid = post.getUid();
+ String name = post.getName();
+
+ //選択が何もない場合は全ての投稿を、選択ある場合は一致する投稿をdataにセット
+ if(selectingGenre.isEmpty() || selectingGenre.contains(genre)) {
+ if(selectingFriend.isEmpty() || selectingFriend.contains(uid)) {
+ data.setName(name);
+ data.setDate(post.getDate());
+ //rateはintで受け取った評価に対応した星の数のStringに変換してセット
+ int intRate = post.getRate();
+ String strRate = "";
+ for (int i = 0; i < 5; i++) {
+ if (intRate > i) {
+ strRate += "★";
+ } else {
+ strRate += "☆";
+ }
+ }
+ data.setRate(strRate);
+ data.setGenre(genre);
+ data.setComment(post.getComment());
+
+ //投稿一つの情報がdataに全部セットされたらDatasetに追加
+ postsDataset.add(data);
}
}
- data.setRate(strRate);
- data.setGenre(post.getGenre());
- data.setComment(post.getComment());
-
- postsDataset.add(data);
+ //フレンド名を表示用HashSetにセット
+ if(!(selectingFriend.isEmpty()) && selectingFriend.contains(uid)) {
+ selectingFriendName.add(name);
+ }
}
+
+ //フレンド選択があればフレンド名を表示する
+ if(!(selectingFriend.isEmpty())) {
+ TextView friendView = (TextView) findViewById(R.id.shopAcFriend);
+ friendView.setText("表示中のフレンド:" + selectingFriendName);
+ }
+
//RecyclerViewをonChangedが呼ばれるたび表示(アダプターを更新してRecyclerViewにセット)
adapter.setList(postsDataset);
rv.setAdapter(adapter);
diff --git a/app/src/main/java/com/example/nemophila/resources/FriendsRest.java b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java
new file mode 100644
index 0000000..dd66b14
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java
@@ -0,0 +1,71 @@
+package com.example.nemophila.resources;
+
+import com.example.nemophila.entities.PostJson;
+
+import java.util.Collection;
+
+import retrofit2.Call;
+import retrofit2.http.DELETE;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.GET;
+import retrofit2.http.PUT;
+import retrofit2.http.Path;
+
+public interface FriendsRest {
+
+ @GET("accounts/{uid}/friends")
+ Call> getFriends(
+ @Path("uid") String uid
+ );
+
+ @FormUrlEncoded
+ @PUT("accounts/{uid}/friends/{fid}")
+ Call putFriend(
+ @Path("uid") String uid,
+ @Path("fid") String fid,
+ @Field("token") String token
+ );
+
+ @DELETE("accounts/{uid}/friends/{fid}")
+ Call deleteFriend(
+ @Path("uid") String uid,
+ @Path("fid") String fid,
+ @Field("token") String token
+ );
+
+ @GET("/accounts/{uid}/requesting")
+ Call> getRequesting(
+ @Path("uid") String uid
+ );
+
+ @FormUrlEncoded
+ @PUT("accounts/{uid}/reqesting/{requesting_id}")
+ Call putRequesting(
+ @Path("uid") String uid,
+ @Path("requesting_id") String requesting_id,
+ @Field("token") String token
+ );
+
+ @FormUrlEncoded
+ @DELETE("accounts/{uid}/reqesting/{requesting_id}")
+ Call deleteRequesting(
+ @Path("uid") String uid,
+ @Path("requesting_id") String requesting_id,
+ @Field("token") String token
+ );
+
+ @GET("accounts/{uid}/reqested")
+ Call> getRequested(
+ @Path("uid") String uid
+ );
+
+ @FormUrlEncoded
+ @DELETE("accounts/{uid}/reqested/{reqested_id}")
+ Call deleteRequested(
+ @Path("uid") String uid,
+ @Path("requested_id") String requested_id,
+ @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 d28414b..b670f3a 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/AccountViewModel.java
@@ -1,5 +1,8 @@
package com.example.nemophila.viewmodels;
+import android.widget.TextView;
+
+import com.example.nemophila.R;
import com.example.nemophila.entities.Account;
import com.example.nemophila.entities.AccountJson;
import com.example.nemophila.entities.Post;
@@ -27,6 +30,7 @@
private final MutableLiveData nameLiveData;
private final MutableLiveData pwLiveData;
private final MutableLiveData> accountPostsLiveData;
+ private final MutableLiveData pwErrorLiveData;
// コンストラクタ
public AccountViewModel() {
@@ -38,6 +42,7 @@
this.nameLiveData = new MutableLiveData<>();
this.pwLiveData = new MutableLiveData<>();
this.accountPostsLiveData = new MutableLiveData<>();
+ this.pwErrorLiveData = new MutableLiveData<>();
}
// ライブデータの取得(ゲッター)
@@ -48,6 +53,9 @@
return pwLiveData;
}
public MutableLiveData> getAccountPostsLiveData() { return accountPostsLiveData; }
+ public MutableLiveData getPwErrorLiveData() {
+ return pwErrorLiveData;
+ }
// 対象のアカウント情報の削除
public void deleteAccount(String uid, String token) {
@@ -78,9 +86,14 @@
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
pwLiveData.setValue(newPw);
+ System.out.println(response.code());
System.out.println("Success ChangePW");
} else {
- System.out.println("response error");
+ if (response.code() == 401){
+ pwErrorLiveData.setValue("error");
+ System.out.println("miss ChangePW");
+ }
+
}
}
@Override
diff --git a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java
new file mode 100644
index 0000000..58e6151
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java
@@ -0,0 +1,65 @@
+package com.example.nemophila.viewmodels;
+
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+import com.example.nemophila.entities.Post;
+import com.example.nemophila.resources.AccountsRest;
+import com.example.nemophila.resources.FriendsRest;
+
+import java.util.Collection;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
+public class FriendViewModel extends ViewModel {
+ // フィールド
+ private final Retrofit retrofit;
+ private final FriendsRest friendsRest;
+ // ライブデータ
+ private final MutableLiveData friendsLiveData;
+ private final MutableLiveData requestedLiveData;
+ private final MutableLiveData> requestingLiveData;
+
+ // コンストラクタ
+ public FriendViewModel() {
+ this.retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ this.friendsRest = retrofit.create(FriendsRest.class);
+ this.friendsLiveData = new MutableLiveData<>();
+ this.requestedLiveData = new MutableLiveData<>();
+ this.requestingLiveData = new MutableLiveData<>();
+ }
+
+ // ライブデータの取得(ゲッター)
+ public MutableLiveData getFriendsLiveData() {
+ return friendsLiveData;
+ }
+ public MutableLiveData getRequestedLiveData() {
+ return requestedLiveData;
+ }
+ public MutableLiveData> getRequestingLiveData() { return requestingLiveData; }
+
+ public void searchFriend(String uid,String fid, String token) {
+ Call call = friendsRest.putFriend ();
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ System.out.println("Successful");
+ } else {
+ System.out.println("ResponseError");
+ }
+ }
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println(" NetworkError" + t);
+ }
+ });
+ }
+}
diff --git a/app/src/main/res/drawable/circle_button.xml b/app/src/main/res/drawable/circle_button.xml
new file mode 100644
index 0000000..2665c08
--- /dev/null
+++ b/app/src/main/res/drawable/circle_button.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_current_location.xml b/app/src/main/res/drawable/ic_current_location.xml
index 3514cf2..1e70349 100644
--- a/app/src/main/res/drawable/ic_current_location.xml
+++ b/app/src/main/res/drawable/ic_current_location.xml
@@ -1,5 +1,5 @@
-
+ android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
diff --git a/app/src/main/res/drawable/ic_mypage.xml b/app/src/main/res/drawable/ic_mypage.xml
new file mode 100644
index 0000000..d06e15c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_mypage.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 4c30562..69d5856 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -23,13 +23,15 @@
android:id="@+id/currentButton"
android:layout_width="50dp"
android:layout_height="50dp"
- android:visibility="gone"
-
- map:srcCompat="@drawable/ic_current_location"
- android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
- android:layout_marginBottom="30dp"
+ android:layout_alignParentBottom="true"
android:layout_marginRight="20dp"
+ android:layout_marginBottom="30dp"
+ android:background="@drawable/circle_button"
+ android:src="@drawable/ic_current_location"
+ android:scaleType="fitCenter"
+ android:padding="10dp"
+ android:visibility="gone"
/>
@@ -41,8 +43,11 @@
android:layout_alignParentRight="true"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
- map:srcCompat="@android:drawable/ic_menu_info_details" />
-
+ android:background="@drawable/circle_button"
+ android:src="@drawable/ic_mypage"
+ android:scaleType="fitCenter"
+ android:padding="7dp"
+ />
@@ -64,18 +69,4 @@
/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_my_page_editor.xml b/app/src/main/res/layout/activity_my_page_editor.xml
index eaf673f..f499bfb 100644
--- a/app/src/main/res/layout/activity_my_page_editor.xml
+++ b/app/src/main/res/layout/activity_my_page_editor.xml
@@ -35,7 +35,8 @@
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.456" />
+ app:layout_constraintVertical_bias="0.456"
+ android:hint="前のパスワード"/>
+ app:layout_constraintVertical_bias="0.112"
+ android:hint="新しいパスワード"/>
+ app:layout_constraintTop_toBottomOf="@+id/annotationComment"
+ app:layout_constraintVertical_bias="0.0" />
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_requesting.xml b/app/src/main/res/layout/activity_requesting.xml
new file mode 100644
index 0000000..b0eb893
--- /dev/null
+++ b/app/src/main/res/layout/activity_requesting.xml
@@ -0,0 +1,9 @@
+
+
+
+
\ 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 394e0cc..5b75b08 100644
--- a/app/src/main/res/layout/activity_shop.xml
+++ b/app/src/main/res/layout/activity_shop.xml
@@ -16,7 +16,7 @@
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.496"
+ app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.047" />
@@ -52,12 +52,36 @@
+ app:layout_constraintTop_toBottomOf="@+id/shopAcGenre"
+ app:layout_constraintVertical_bias="0.669" />
+
+
+
+
\ 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 504a6fe..34b735c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -9,6 +9,7 @@
TestActivity
GpsActivity
ShopCreateActivity
+ RequestingActivity
UserName
Make a new Account
Password