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 a40b3e2..f55a4e3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,18 +63,6 @@ android:exported="true" android:label="@string/title_activity_sign_up"> - - - - - - - - - @@ -83,6 +71,18 @@ + + + + + + + + + + android:label="@string/title_activity_requesting" + android:windowSoftInputMode="adjustPan"> @@ -105,12 +106,12 @@ android:exported="true" android:label="@string/title_activity_my_page"> - - + + - - + + diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java index ffb93c8..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,7 @@ 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; @@ -16,9 +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 { @@ -48,8 +51,25 @@ rv.setLayoutManager(llm); String myUid = nemophila.getUid(); // 自身のidを取得 -// friendViewModel.getFriends(myUid); // 自身のフレンドの一覧を取得するメソッドを呼び出す - + 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); diff --git a/app/src/main/java/com/example/nemophila/MyPageActivity.java b/app/src/main/java/com/example/nemophila/MyPageActivity.java index ed666bd..ae30c66 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/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 8d4dfb9..6adf436 100644 --- a/app/src/main/java/com/example/nemophila/RequestingActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestingActivity.java @@ -2,6 +2,7 @@ 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; @@ -15,6 +16,8 @@ import android.widget.EditText; import android.widget.TextView; +import com.example.nemophila.viewmodels.PostsViewModel; + import java.util.ArrayList; import java.util.List; @@ -24,6 +27,10 @@ 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); @@ -42,15 +49,17 @@ //入力されたIDを取得 EditText editSearchId = (EditText) findViewById(R.id.inputRequestingId); String searchingId = editSearchId.getText().toString(); - //取得したIDのユーザー名を受け取る + //取得した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を取得、アダプターを宣言 @@ -67,11 +76,25 @@ 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のみで仮作成 + //とりあえずnameのみで作成 //Adapter public class RequestingAdapter extends RecyclerView.Adapter { @@ -90,8 +113,7 @@ @Override public RequestingActivity.RequestingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - //ShopActivityのレイアウトのままなので、ここを作って反映させる - View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_shop_activity_posts, parent,false); + View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_requesting_activity, parent,false); RequestingActivity.RequestingViewHolder vh = new RequestingActivity.RequestingViewHolder(inflate); return vh; } @@ -113,7 +135,7 @@ public RequestingViewHolder(@NonNull View itemView) { super(itemView); - nameView = (TextView) itemView.findViewById(R.id.userName); + nameView = (TextView) itemView.findViewById(R.id.requestingName); } } diff --git a/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java index d865620..2df8fc1 100644 --- a/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java +++ b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java @@ -1,6 +1,22 @@ package com.example.nemophila.entities; public class AccountNameJson { + private String uid; private String name; - private String id; + + // 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/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java index 5d10a01..4749334 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java @@ -48,7 +48,7 @@ public MutableLiveData> getRequestingLiveData() { return requestingLiveData; } - +//フレンドの情報の取得 public void getFriends(String uid) { Call> call = friendsRest.getFriends(uid); call.enqueue(new Callback>() { @@ -69,7 +69,7 @@ } }); } - +// public void putFriend(String uid,String fid, String token) { Call call = friendsRest.putFriend(uid,fid,token); call.enqueue(new Callback() { @@ -87,7 +87,7 @@ } }); } - + // 対象のアカウントのフレンド登録情報の削除 public void deleteFriend(String uid,String fid, String token) { Call call = friendsRest.deleteFriend(uid,fid,token); call.enqueue(new Callback() { @@ -105,7 +105,7 @@ } }); } - + //フレンド申請を行うときの情報の取得 public void getRequesting(String uid) { Call> call = friendsRest.getRequesting(uid); call.enqueue(new Callback>() { @@ -141,7 +141,7 @@ } }); } - + // 対象のアカウントのフレンド申請を行うときの情報削除 public void deleteRequesting(String uid,String requesting_id, String token) { Call call = friendsRest.deleteRequesting(uid,requesting_id,token); call.enqueue(new Callback() { @@ -159,7 +159,7 @@ } }); } - + //フレンド申請を行われたときの情報の取得 public void getRequested(String uid) { Call> call = friendsRest.getRequested(uid); call.enqueue(new Callback>() { @@ -177,7 +177,7 @@ } }); } - + // 対象のアカウントのフレンド申請を行われたときの情報削除 public void deleteRequested(String uid,String fid, String token) { Call call = friendsRest.deleteRequested(uid,fid,token); call.enqueue(new Callback() { 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 e3b2df7..6dc38db 100644 --- a/app/src/main/res/layout/activity_requesting.xml +++ b/app/src/main/res/layout/activity_requesting.xml @@ -43,10 +43,10 @@ android:text="IDで検索してフレンド申請を送る" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.094" + app:layout_constraintHorizontal_bias="0.124" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.127" /> + app:layout_constraintVertical_bias="0.123" /> + app:layout_constraintTop_toBottomOf="@+id/titleRequestingList" + app:layout_constraintVertical_bias="0.428" /> \ 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 @@ + + + + + + + + +