diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 1adb1c2..40556a2 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 81be3c3..54ed16b 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -13,20 +13,26 @@
-
-
+
+
+
+
+
-
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 9204a42..1fc7e27 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,6 +29,7 @@
buildFeatures {
viewBinding true
}
+ namespace 'com.example.nemophila'
}
//repositories {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6156318..ef76412 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -28,10 +28,10 @@
android:exported="true"
android:label="Map">
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
+ android:label="@string/title_activity_requesting"
+ android:windowSoftInputMode="adjustPan">
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java
index 8168255..02785cb 100644
--- a/app/src/main/java/com/example/nemophila/FriendActivity.java
+++ b/app/src/main/java/com/example/nemophila/FriendActivity.java
@@ -2,6 +2,8 @@
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -15,7 +17,11 @@
import android.widget.ImageView;
import android.widget.TextView;
+import com.example.nemophila.entities.AccountNameJson;
+import com.example.nemophila.viewmodels.FriendViewModel;
+
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
public class FriendActivity extends AppCompatActivity {
@@ -30,6 +36,9 @@
List friendsDataset = new ArrayList<>(); // 1行分の情報を持つDataModelを格納するリスト
RecyclerView rv = findViewById(R.id.friendsList); // recyclerViewを取得
adapter = new FriendActivityAdapter(friendsDataset); // adapterを取得
+ FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得
+ Nemophila nemophila = (Nemophila) this.getApplication();
+
//一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
LinearLayoutManager llm = new LinearLayoutManager(this);
@@ -41,6 +50,27 @@
rv.setHasFixedSize(true);
rv.setLayoutManager(llm);
+ String myUid = nemophila.getUid(); // 自身のidを取得
+ friendViewModel.getFriends(myUid); // 自身のフレンドの一覧を取得するメソッドを呼び出す
+
+ friendViewModel.getFriendsLiveData().observe(this, new Observer>() {
+ @Override
+ public void onChanged(Collection friends) {
+ // 以前のデータが残っていると不都合なので、空にしておく
+ friendsDataset.clear();
+
+ for (AccountNameJson friend : friends) {
+ FriendDataModel data = new FriendDataModel();
+ data.setName(friend.getName());
+ friendsDataset.add(data);
+
+ //RecyclerViewをonChangedが呼ばれるたび表示(アダプターを更新してRecyclerViewにセット)
+ adapter.setList(friendsDataset);
+ rv.setAdapter(adapter);
+ }
+ }
+ });
+
// マイページ画面に画面遷移する
Button backButton = findViewById(R.id.backMyPage);
backButton.setOnClickListener(v -> {
diff --git a/app/src/main/java/com/example/nemophila/FriendActivityAdapter.java b/app/src/main/java/com/example/nemophila/FriendActivityAdapter.java
deleted file mode 100644
index f4490da..0000000
--- a/app/src/main/java/com/example/nemophila/FriendActivityAdapter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.example.nemophila;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import java.util.List;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class FriendActivityAdapter extends RecyclerView.Adapter {
- private List list;
-
- public FriendActivityAdapter(List list) {
- this.list = list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-
- @NonNull
- @Override
- public FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int ViewType) {
- View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_friends_activity, parent,false);
- FriendsViewHolder vh = new FriendsViewHolder(inflate);
- return vh;
- }
-
- @Override
- public void onBindViewHolder(@NonNull FriendsViewHolder holder, int position) {
- // 後からアイコンの登録をできるようにする
- holder.nameView.setText(list.get(position).getName());
- }
-
- @Override
- public int getItemCount() {
- return list.size();
- }
-}
diff --git a/app/src/main/java/com/example/nemophila/FriendDataModel.java b/app/src/main/java/com/example/nemophila/FriendDataModel.java
deleted file mode 100644
index 1eaaefc..0000000
--- a/app/src/main/java/com/example/nemophila/FriendDataModel.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.example.nemophila;
-
-public class FriendDataModel {
- private String name;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/app/src/main/java/com/example/nemophila/FriendsViewHolder.java b/app/src/main/java/com/example/nemophila/FriendsViewHolder.java
deleted file mode 100644
index 393098a..0000000
--- a/app/src/main/java/com/example/nemophila/FriendsViewHolder.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.example.nemophila;
-
-import android.view.View;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class FriendsViewHolder extends RecyclerView.ViewHolder {
- public ImageView iconView;
- public TextView nameView;
- public Button deleteButton;
-
- public FriendsViewHolder(@NonNull View itemView) {
- super(itemView);
- iconView = itemView.findViewById(R.id.friendIcon);
- nameView = itemView.findViewById(R.id.friendName);
- deleteButton = itemView.findViewById(R.id.friendDelete);
- }
-}
diff --git a/app/src/main/java/com/example/nemophila/MyPageActivity.java b/app/src/main/java/com/example/nemophila/MyPageActivity.java
index 3b40999..0791148 100644
--- a/app/src/main/java/com/example/nemophila/MyPageActivity.java
+++ b/app/src/main/java/com/example/nemophila/MyPageActivity.java
@@ -8,7 +8,9 @@
import android.content.Intent;
import android.os.Bundle;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
@@ -83,24 +85,24 @@
}
});
- /* ここからよくわかっていない */
+ /* ここからあんまわかっていない */
RecyclerView rv = (RecyclerView) findViewById(R.id.postsList);
LinearLayoutManager llm = new LinearLayoutManager(this);
- List postsDataset = new ArrayList<>();
- MyPageActivityAdapter adapter = new MyPageActivityAdapter(postsDataset);
+ List MyPageActDataset = new ArrayList<>();
+ MyPageActAdapter adapter = new MyPageActAdapter(MyPageActDataset);
rv.setHasFixedSize(true);
rv.setLayoutManager(llm);
rv.setAdapter(adapter);
+ accountViewModel.getAccountPosts(uid);
accountViewModel.getAccountPostsLiveData().observe(this, new Observer >() {
@Override
public void onChanged(Collection Posts) {
- //postsDatasetを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
- postsDataset.clear();
+ //MyPageActDatasetを一旦クリアし、LiveDataから受け取ったデータを一つずつセット
+ MyPageActDataset.clear();
for (Post post: Posts){
- PostDataModel data = new PostDataModel();
- data.setName(post.getName());
+ MyPageActDataModel data = new MyPageActDataModel();
data.setDate(post.getDate());
//rateはintで受け取った評価に対応した星の数のStringに変換してセット
int intRate = post.getRate();
@@ -115,25 +117,101 @@
data.setRate(strRate);
data.setGenre(post.getGenre());
data.setComment(post.getComment());
-
- postsDataset.add(data);
+ MyPageActDataset.add(data);
}
+
//RecyclerViewをonChangedが呼ばれるたび表示(アダプターを更新してRecyclerViewにセット)
- adapter.setList(postsDataset);
+ adapter.setList(MyPageActDataset);
rv.setAdapter(adapter);
}
});
}
-// 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);
-// }
+ /* ここからMyPageActivityの内部クラス */
+
+ // Adapter
+ public class MyPageActAdapter extends RecyclerView.Adapter {
+
+ private List list;
+
+ public void setList(List list) {
+ this.list = list;
+ }
+
+ public MyPageActAdapter(List list) {
+ this.list = list;
+ }
+
+ @Override
+ public MyPageActViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_my_page_activity_posts, parent,false);
+ MyPageActViewHolder vh = new MyPageActViewHolder(inflate);
+ return vh;
+ }
+
+ @Override
+ public void onBindViewHolder(MyPageActViewHolder holder, int position) {
+ holder.dateView.setText(list.get(position).getDate());
+ holder.rateView.setText(list.get(position).getRate());
+ holder.genreView.setText(list.get(position).getGenre());
+ holder.commentView.setText(list.get(position).getComment());
+ }
+
+ @Override
+ public int getItemCount() {
+ return list.size();
+ }
+ }
+
+ // ViewHolder
+ public class MyPageActViewHolder extends RecyclerView.ViewHolder {
+ public TextView dateView;
+ public TextView rateView;
+ public TextView genreView;
+ public TextView commentView;
+
+ public MyPageActViewHolder(View itemView) {
+ super(itemView);
+ dateView = (TextView) itemView.findViewById(R.id.date);
+ rateView = (TextView) itemView.findViewById(R.id.rate);
+ genreView = (TextView) itemView.findViewById(R.id.genre);
+ commentView = (TextView) itemView.findViewById(R.id.comment);
+ }
+ }
+
+ // DataModel
+ public class MyPageActDataModel {
+ private String date;
+ private String rate;
+ private String genre;
+ private String comment;
+
+ public String getDate() {
+ return date;
+ }
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getRate() {
+ return rate;
+ }
+ public void setRate(String rate) {
+ this.rate = rate;
+ }
+
+ public String getGenre() {
+ return genre;
+ }
+ public void setGenre(String genre) {
+ this.genre = genre;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+ }
}
diff --git a/app/src/main/java/com/example/nemophila/MyPageActivityAdapter.java b/app/src/main/java/com/example/nemophila/MyPageActivityAdapter.java
deleted file mode 100644
index 6af5422..0000000
--- a/app/src/main/java/com/example/nemophila/MyPageActivityAdapter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.example.nemophila;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.recyclerview.widget.RecyclerView;
-
-import java.util.List;
-
-public class MyPageActivityAdapter extends RecyclerView.Adapter {
-
- private List list;
-
- public void setList(List list) {
- this.list = list;
- }
-
- public MyPageActivityAdapter(List list) {
- this.list = list;
- }
-
- @Override
- public PostsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_my_page_activity_posts, parent,false);
- PostsViewHolder vh = new PostsViewHolder(inflate);
- return vh;
- }
-
- @Override
- public void onBindViewHolder(PostsViewHolder holder, int position) {
- holder.dateView.setText(list.get(position).getDate());
- holder.rateView.setText(list.get(position).getRate());
- holder.genreView.setText(list.get(position).getGenre());
- holder.commentView.setText(list.get(position).getComment());
- }
-
- @Override
- public int getItemCount() {
- return list.size();
- }
-}
diff --git a/app/src/main/java/com/example/nemophila/PostActivity.java b/app/src/main/java/com/example/nemophila/PostActivity.java
index 6282a6f..cf0b6b2 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.Observer;
import androidx.lifecycle.ViewModelProvider;
import android.content.Intent;
@@ -15,11 +16,17 @@
import com.example.nemophila.entities.Account;
+import com.example.nemophila.entities.Post;
import com.example.nemophila.entities.Shop;
+import com.example.nemophila.resources.ShopsRest;
import com.example.nemophila.viewmodels.PostsViewModel;
import com.example.nemophila.viewmodels.ShopsViewModel;
import com.google.android.material.snackbar.Snackbar;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
import retrofit2.Retrofit;
@@ -53,6 +60,24 @@
postsViewModel = new ViewModelProvider(this).get(PostsViewModel.class);
shopsViewModel = new ViewModelProvider(this).get(ShopsViewModel.class);
+//店舗新規作成のオブザーバー
+ shopsViewModel.getCurrentLiveData().observe(this, new Observer() {
+ @Override
+ public void onChanged(Shop shop) {
+ System.out.println("店舗新規作成完了");
+ postsViewModel.createPost(uid, token, shop.getSid(), rate, genre, comment, img1, img2, img3);
+
+ System.out.println("lat" + nemophila.getCurrentLatitude() + "\nlong" + nemophila.getCurrentLongitude());
+
+ //投稿時にリセット
+ nemophila.setDummyShop(null);
+ nemophila.setCurrentShop(null);
+
+ Intent intent = new Intent(getApplication(), MainActivity.class);
+ startActivity(intent);
+ }
+ });
+
uid = nemophila.getUid();
token = nemophila.getToken();
shop = nemophila.getCurrentShop();
@@ -169,17 +194,24 @@
// 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);
+ if (shop == null) {
+ shopsViewModel.createShop(shopName, nemophila.getCurrentLongitude(), nemophila.getCurrentLatitude());
+ } else {
+ postsViewModel.createPost(uid, token, sid, rate, genre, comment, img1, img2, img3);
+ System.out.println("既存店舗に投稿");
+ System.out.println("lat" + nemophila.getCurrentLatitude() + "\nlong" + nemophila.getCurrentLongitude());
- Intent intent = new Intent(getApplication(), MainActivity.class);
- startActivity(intent);
+ //投稿時にリセット
+ nemophila.setDummyShop(null);
+ nemophila.setCurrentShop(null);
+
+ Intent intent = new Intent(getApplication(), MainActivity.class);
+ startActivity(intent);
+ }
}
}
+
});
}
}
diff --git a/app/src/main/java/com/example/nemophila/PostDataModel.java b/app/src/main/java/com/example/nemophila/PostDataModel.java
index 0d9f577..f4c5bc0 100644
--- a/app/src/main/java/com/example/nemophila/PostDataModel.java
+++ b/app/src/main/java/com/example/nemophila/PostDataModel.java
@@ -1,43 +1,43 @@
-package com.example.nemophila;
-
-public class PostDataModel {
- private String name;
- private String date;
- private String rate;
- private String genre;
- private String comment;
-
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDate() {
- return date;}
- public void setDate(String date) {
- this.date = date;
- }
-
- public String getRate() {
- return rate;
- }
- public void setRate(String rate) {
- this.rate = rate;
- }
-
- public String getGenre() {
- return genre;
- }
- public void setGenre(String genre) {
- this.genre = genre;
- }
-
- public String getComment() {
- return comment;
- }
- public void setComment(String comment) {
- this.comment = comment;
- }
-}
+//package com.example.nemophila;
+//
+//public class PostDataModel {
+// private String name;
+// private String date;
+// private String rate;
+// private String genre;
+// private String comment;
+//
+// public String getName() {
+// return name;
+// }
+// public void setName(String name) {
+// this.name = name;
+// }
+//
+// public String getDate() {
+// return date;}
+// public void setDate(String date) {
+// this.date = date;
+// }
+//
+// public String getRate() {
+// return rate;
+// }
+// public void setRate(String rate) {
+// this.rate = rate;
+// }
+//
+// public String getGenre() {
+// return genre;
+// }
+// public void setGenre(String genre) {
+// this.genre = genre;
+// }
+//
+// public String getComment() {
+// return comment;
+// }
+// public void setComment(String comment) {
+// this.comment = comment;
+// }
+//}
diff --git a/app/src/main/java/com/example/nemophila/PostsViewHolder.java b/app/src/main/java/com/example/nemophila/PostsViewHolder.java
index c1d19fd..1f618d3 100644
--- a/app/src/main/java/com/example/nemophila/PostsViewHolder.java
+++ b/app/src/main/java/com/example/nemophila/PostsViewHolder.java
@@ -1,24 +1,24 @@
-package com.example.nemophila;
-
-import android.view.View;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class PostsViewHolder extends RecyclerView.ViewHolder {
- public TextView nameView;
- public TextView dateView;
- public TextView rateView;
- public TextView genreView;
- public TextView commentView;
-
- public PostsViewHolder(@NonNull View itemView) {
- super(itemView);
- nameView = (TextView) itemView.findViewById(R.id.userName);
- dateView = (TextView) itemView.findViewById(R.id.date);
- rateView = (TextView) itemView.findViewById(R.id.rate);
- genreView = (TextView) itemView.findViewById(R.id.genre);
- commentView = (TextView) itemView.findViewById(R.id.comment);
- }
-}
+//package com.example.nemophila;
+//
+//import android.view.View;
+//import android.widget.TextView;
+//
+//import androidx.annotation.NonNull;
+//import androidx.recyclerview.widget.RecyclerView;
+//
+//public class PostsViewHolder extends RecyclerView.ViewHolder {
+// public TextView nameView;
+// public TextView dateView;
+// public TextView rateView;
+// public TextView genreView;
+// public TextView commentView;
+//
+// public PostsViewHolder(@NonNull View itemView) {
+// super(itemView);
+// nameView = (TextView) itemView.findViewById(R.id.userName);
+// dateView = (TextView) itemView.findViewById(R.id.date);
+// rateView = (TextView) itemView.findViewById(R.id.rate);
+// genreView = (TextView) itemView.findViewById(R.id.genre);
+// commentView = (TextView) itemView.findViewById(R.id.comment);
+// }
+//}
diff --git a/app/src/main/java/com/example/nemophila/RequestingActivity.java b/app/src/main/java/com/example/nemophila/RequestingActivity.java
index 6214a8e..6adf436 100644
--- a/app/src/main/java/com/example/nemophila/RequestingActivity.java
+++ b/app/src/main/java/com/example/nemophila/RequestingActivity.java
@@ -1,8 +1,25 @@
package com.example.nemophila;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import android.content.Intent;
import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.example.nemophila.viewmodels.PostsViewModel;
+
+import java.util.ArrayList;
+import java.util.List;
public class RequestingActivity extends AppCompatActivity {
@@ -10,5 +27,129 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_requesting);
+ //Nemophilaから自分のuidとtokenを取得
+ String uid = ((Nemophila)getApplication()).getUid();
+ String token = ((Nemophila)getApplication()).getToken();
+ String requestingId;
+
+ //左上のボタンでマイページへ遷移
+ Button returnButton = (Button)findViewById(R.id.requestingAcReturnButton);
+ returnButton.setOnClickListener(new View.OnClickListener(){
+ public void onClick(View v){
+ Intent intent = new Intent(getApplication(), MyPageActivity.class);
+ startActivity(intent);
+ }
+ });
+
+ //フレンド検索ボタン
+ Button requestingButton = (Button)findViewById(R.id.requestingSearchButton);
+ requestingButton.setOnClickListener(new View.OnClickListener(){
+ @Override
+ public void onClick(View v){
+ //入力されたIDを取得
+ EditText editSearchId = (EditText) findViewById(R.id.inputRequestingId);
+ String searchingId = editSearchId.getText().toString();
+ //取得したIDのユーザー名を受け取り、OKならreqyestingIdに入れる
+ String requestingName;
+ //申請を送るダイアログを表示
+ RequestingDialogFragment dialog = new RequestingDialogFragment();
+ dialog.show(getSupportFragmentManager(), "Requesting_dialog");
+ //OK押したら申請するメソッドにuid、requestingId、tokenを渡す
+ }
+ });
+
+ //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内にしたい)
+ List requestingDataSet = new ArrayList<>();
+ List RequestingDataList = new ArrayList<>();
+
+ //xmlからrvにRecyclerViewを取得、アダプターを宣言
+ RecyclerView rv = (RecyclerView) findViewById(R.id.requestingList);
+ RequestingActivity.RequestingAdapter adapter = new RequestingActivity.RequestingAdapter(RequestingDataList);
+
+ //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
+ LinearLayoutManager llm = new LinearLayoutManager(this);
+ //
+ RecyclerView.ItemDecoration itemDecoration =
+ new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
+ rv.addItemDecoration(itemDecoration);
+
+ rv.setHasFixedSize(true);
+ rv.setLayoutManager(llm);
+
+
+ //表示テスト用に仮データ
+ List testDataSet = new ArrayList<>();
+ for (int i = 0; i < 15; i++) {
+ RequestingDataModel data = new RequestingDataModel();
+ data.setName("ネモフィラ太郎"+ i + "号(テスト)");
+
+ testDataSet.add(data);
+ }
+ //onChange内に書くべき表示部分
+ adapter.setList(testDataSet);
+ rv.setAdapter(adapter);
+
}
+
+
+
+ //RecyclerViewのための内部クラス
+ //とりあえずnameのみで作成
+
+ //Adapter
+ public class RequestingAdapter extends RecyclerView.Adapter {
+
+ private List list;
+
+ public RequestingAdapter(List list) {
+ this.list =list;
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ }
+
+ @NonNull
+ @Override
+ public RequestingActivity.RequestingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+
+ View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_requesting_activity, parent,false);
+ RequestingActivity.RequestingViewHolder vh = new RequestingActivity.RequestingViewHolder(inflate);
+ return vh;
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull RequestingActivity.RequestingViewHolder holder, int position) {
+ holder.nameView.setText(list.get(position).getName());
+ }
+
+ @Override
+ public int getItemCount() {
+ return list.size();
+ }
+ }
+
+ //ViewHolder
+ public class RequestingViewHolder extends RecyclerView.ViewHolder {
+ public TextView nameView;
+
+ public RequestingViewHolder(@NonNull View itemView) {
+ super(itemView);
+ nameView = (TextView) itemView.findViewById(R.id.requestingName);
+ }
+ }
+
+ //DataModel
+ public static class RequestingDataModel {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/RequestingDialogFragment.java b/app/src/main/java/com/example/nemophila/RequestingDialogFragment.java
new file mode 100644
index 0000000..03fa52f
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/RequestingDialogFragment.java
@@ -0,0 +1,29 @@
+package com.example.nemophila;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+public class RequestingDialogFragment extends DialogFragment {
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setTitle("フレンド申請")
+ .setMessage("IDにあったユーザー")
+ .setPositiveButton("申請を送る", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ // ボタンを押した時の処理
+ }
+ })
+ .setNegativeButton("キャンセル", null);
+ return builder.create();
+ }
+
+}
diff --git a/app/src/main/java/com/example/nemophila/ShopActivity.java b/app/src/main/java/com/example/nemophila/ShopActivity.java
index 3b9d9bb..b99788f 100644
--- a/app/src/main/java/com/example/nemophila/ShopActivity.java
+++ b/app/src/main/java/com/example/nemophila/ShopActivity.java
@@ -253,7 +253,8 @@
}
public String getDate() {
- return date;}
+ return date;
+ }
public void setDate(String date) {
this.date = date;
}
diff --git a/app/src/main/java/com/example/nemophila/SignUpActivity.java b/app/src/main/java/com/example/nemophila/SignUpActivity.java
index e1f276b..b867654 100644
--- a/app/src/main/java/com/example/nemophila/SignUpActivity.java
+++ b/app/src/main/java/com/example/nemophila/SignUpActivity.java
@@ -34,6 +34,14 @@
//Nemophilaと連携
nemophila = (Nemophila) this.getApplication();
+ //Nemophilaにtokenとuidがある場合サインアップ画面をスキップ
+ if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){
+ Intent intent = new Intent(SignUpActivity.this,MainActivity.class);
+ startActivity(intent);
+ System.out.println("サインアップ処理をスキップ");
+ return;
+ }
+
//通信の初期化
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/")
diff --git a/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java
new file mode 100644
index 0000000..2df8fc1
--- /dev/null
+++ b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java
@@ -0,0 +1,22 @@
+package com.example.nemophila.entities;
+
+public class AccountNameJson {
+ private String uid;
+ private String name;
+
+ // Getter
+ public String getName() {
+ return name;
+ }
+ public String getUid() {
+ return uid;
+ }
+
+ // Setter
+ public void setName(String name) {
+ this.name = name;
+ }
+ public void setUid(String uid) {
+ this.uid = uid;
+ }
+}
diff --git a/app/src/main/java/com/example/nemophila/resources/FriendsRest.java b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java
index dd66b14..52b4fbf 100644
--- a/app/src/main/java/com/example/nemophila/resources/FriendsRest.java
+++ b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java
@@ -1,5 +1,6 @@
package com.example.nemophila.resources;
+import com.example.nemophila.entities.AccountNameJson;
import com.example.nemophila.entities.PostJson;
import java.util.Collection;
@@ -13,9 +14,8 @@
import retrofit2.http.Path;
public interface FriendsRest {
-
@GET("accounts/{uid}/friends")
- Call> getFriends(
+ Call> getFriends(
@Path("uid") String uid
);
@@ -35,7 +35,7 @@
);
@GET("/accounts/{uid}/requesting")
- Call> getRequesting(
+ Call> getRequesting(
@Path("uid") String uid
);
@@ -56,7 +56,7 @@
);
@GET("accounts/{uid}/reqested")
- Call> getRequested(
+ Call> getRequested(
@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 b670f3a..aec3547 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,6 @@
package com.example.nemophila.viewmodels;
+import android.util.Log;
import android.widget.TextView;
import com.example.nemophila.R;
@@ -12,6 +13,7 @@
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -31,6 +33,7 @@
private final MutableLiveData pwLiveData;
private final MutableLiveData> accountPostsLiveData;
private final MutableLiveData pwErrorLiveData;
+ private final MutableLiveData accountLiveData;
// コンストラクタ
public AccountViewModel() {
@@ -43,6 +46,7 @@
this.pwLiveData = new MutableLiveData<>();
this.accountPostsLiveData = new MutableLiveData<>();
this.pwErrorLiveData = new MutableLiveData<>();
+ this.accountLiveData = new MutableLiveData<>();
}
// ライブデータの取得(ゲッター)
@@ -56,6 +60,9 @@
public MutableLiveData getPwErrorLiveData() {
return pwErrorLiveData;
}
+ public MutableLiveData getAccountLiveData() {
+ return accountLiveData;
+ }
// 対象のアカウント情報の削除
public void deleteAccount(String uid, String token) {
@@ -156,6 +163,47 @@
accountPostsLiveData.setValue(posts);
}
+ //idからアカウント情報を取得するメソッド
+ private void fetchAccount(String id) {
+ Call call = accountsRest.getAccount(id);
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()) {
+ Account ac = new Account(response.body());
+ accountLiveData.setValue(ac);
+ System.out.println("success");
+ } else {
+ System.out.println("response error");
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ System.out.println("network error" + t);
+ }
+ });
+ }
+
+ //同期的にidからアカウント情報を取得するメソッド
+ public Account sample(String id) {
+ try {
+ Response response = accountsRest.getAccount(id).execute();
+
+ if (response.isSuccessful()) {
+ Account account = new Account(response.body());
+ return account;
+ } else {
+ Log.d("message", "error" + response.code());
+ }
+
+ } catch (IOException e) {
+ Log.i("message", "error" + e.getMessage());
+ }
+ return null;
+ }
+
// 対象のアカウントがした投稿の削除
public void deleteAccountPost(String sid, String uid, String pid, String token) {
Call call = accountsRest.deletePost(sid, uid, pid, token);
diff --git a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java
index bf32a70..2be6f58 100644
--- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java
+++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java
@@ -3,7 +3,9 @@
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
+import com.example.nemophila.entities.AccountNameJson;
import com.example.nemophila.entities.Post;
+import com.example.nemophila.entities.PostJson;
import com.example.nemophila.resources.AccountsRest;
import com.example.nemophila.resources.FriendsRest;
@@ -20,9 +22,9 @@
private final Retrofit retrofit;
private final FriendsRest friendsRest;
// ライブデータ
- private final MutableLiveData friendsLiveData;
- private final MutableLiveData requestedLiveData;
- private final MutableLiveData> requestingLiveData;
+ private final MutableLiveData> friendsLiveData;
+ private final MutableLiveData> requestedLiveData;
+ private final MutableLiveData> requestingLiveData;
// コンストラクタ
public FriendViewModel() {
@@ -37,15 +39,38 @@
}
// ライブデータの取得(ゲッター)
- public MutableLiveData getFriendsLiveData() {
+ public MutableLiveData> getFriendsLiveData() {
return friendsLiveData;
}
- public MutableLiveData getRequestedLiveData() {
+ public MutableLiveData> getRequestedLiveData() {
return requestedLiveData;
}
- public MutableLiveData> getRequestingLiveData() { return requestingLiveData; }
+ public MutableLiveData> getRequestingLiveData() { return requestingLiveData; }
- public void searchFriend(String uid,String fid, String token) {
+
+//フレンドの情報の取得
+ public void getFriends(String uid) {
+ Call> call = friendsRest.getFriends(uid);
+ call.enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if (response.isSuccessful()) {
+ System.out.println("Successful");
+ Collection accountNameJson = response.body();
+ friendsLiveData.setValue(accountNameJson);
+
+ } else {
+ System.out.println("ResponseError");
+ }
+ }
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ System.out.println(" NetworkError" + t);
+ }
+ });
+ }
+//
+ public void putFriend(String uid,String fid, String token) {
Call call = friendsRest.putFriend(uid,fid,token);
call.enqueue(new Callback() {
@Override
@@ -62,4 +87,112 @@
}
});
}
+ // 対象のアカウントのフレンド登録情報の削除
+ public void deleteFriend(String uid,String fid, String token) {
+ Call call = friendsRest.deleteFriend(uid,fid,token);
+ 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);
+ }
+ });
+ }
+ //フレンド申請を行うときの情報の取得
+ public void getRequesting(String uid) {
+ Call> call = friendsRest.getRequesting(uid);
+ 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);
+ }
+ });
+ }
+
+ public void putRequesting(String uid,String requesting_id, String token) {
+ Call call = friendsRest.putRequesting(uid,requesting_id,token);
+ 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);
+ }
+ });
+ }
+ // 対象のアカウントのフレンド申請を行うときの情報削除
+ public void deleteRequesting(String uid,String requesting_id, String token) {
+ Call call = friendsRest.deleteRequesting(uid,requesting_id,token);
+ 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);
+ }
+ });
+ }
+ //フレンド申請を行われたときの情報の取得
+ public void getRequested(String uid) {
+ Call> call = friendsRest.getRequested(uid);
+ 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);
+ }
+ });
+ }
+ // 対象のアカウントのフレンド申請を行われたときの情報削除
+ public void deleteRequested(String uid,String fid, String token) {
+ Call call = friendsRest.deleteRequested(uid,fid,token);
+ 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/blue_circle_button.xml b/app/src/main/res/drawable/blue_circle_button.xml
new file mode 100644
index 0000000..e007807
--- /dev/null
+++ b/app/src/main/res/drawable/blue_circle_button.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_baseline_clear_24.xml b/app/src/main/res/drawable/ic_baseline_clear_24.xml
new file mode 100644
index 0000000..844b6b6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_clear_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_requesting.xml b/app/src/main/res/layout/activity_requesting.xml
index b0eb893..6dc38db 100644
--- a/app/src/main/res/layout/activity_requesting.xml
+++ b/app/src/main/res/layout/activity_requesting.xml
@@ -6,4 +6,98 @@
android:layout_height="match_parent"
tools:context=".RequestingActivity">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_my_page_activity_posts.xml b/app/src/main/res/layout/layout_my_page_activity_posts.xml
index 1467c83..ac65699 100644
--- a/app/src/main/res/layout/layout_my_page_activity_posts.xml
+++ b/app/src/main/res/layout/layout_my_page_activity_posts.xml
@@ -1,5 +1,6 @@
-
+ android:layout_height="match_parent"
+ android:layout_weight="0.1" />
+ android:textSize="16sp" />
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/layout_requesting_activity.xml b/app/src/main/res/layout/layout_requesting_activity.xml
new file mode 100644
index 0000000..dcfe6bf
--- /dev/null
+++ b/app/src/main/res/layout/layout_requesting_activity.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 3eb7c48..98b5d27 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,7 +2,7 @@
plugins {
id 'com.android.application' version '7.2.1' apply false
id 'com.android.library' version '7.2.1' apply false
- id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
+ id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.0' apply false
}
task clean(type: Delete) {
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 870a1dc..eb62b05 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Tue May 30 13:58:12 JST 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME