diff --git a/.idea/misc.xml b/.idea/misc.xml index 743778d..961a5e2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -12,9 +12,12 @@ + + + @@ -34,8 +37,6 @@ - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e590043..0407368 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -103,22 +103,22 @@ android:exported="true" 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 d611634..dbca5a6 100644 --- a/app/src/main/java/com/example/nemophila/FriendActivity.java +++ b/app/src/main/java/com/example/nemophila/FriendActivity.java @@ -11,11 +11,14 @@ import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Color; +import android.graphics.PorterDuff; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -28,6 +31,7 @@ import java.util.List; public class FriendActivity extends AppCompatActivity { + private Nemophila nemophila; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -37,7 +41,7 @@ List friendsDataset = new ArrayList<>(); // 1行分の情報を持つDataModelを格納するリスト RecyclerView rv = findViewById(R.id.friendsList); // recyclerViewを取得 FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得 - Nemophila nemophila = (Nemophila) this.getApplication(); + nemophila = (Nemophila) this.getApplication(); //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 @@ -69,6 +73,18 @@ .create() .show(); } + + @Override + void onFavoriteClick(View view, int position, FriendDataModel friend, ImageView favorite) { + if (favorite.getVisibility() == View.INVISIBLE) { + favorite.setVisibility(View.VISIBLE); + nemophila.setFavoriteFriends(friend.getId()); + } else { + favorite.setVisibility(View.INVISIBLE); + nemophila.removeFavoriteFriends(friend.getId()); + System.out.println(nemophila.getFavoriteFriends()); + } + } }; friendViewModel.getFriends(myUid); // 自身のフレンドの一覧を取得するメソッドを呼び出す @@ -102,14 +118,14 @@ // ----------- RecyclerView用の内部クラス ------------// // Adapter abstract public class FriendActivityAdapter extends RecyclerView.Adapter { - private List friendDatas; + private List friendData; - public FriendActivityAdapter(List friendDatas) { - this.friendDatas = friendDatas; + public FriendActivityAdapter(List friendData) { + this.friendData = friendData; } - public void setList(List friendDatas) { - this.friendDatas = friendDatas; + public void setList(List friendData) { + this.friendData = friendData; } @NonNull @@ -120,13 +136,23 @@ // ViewHolderを生成 FriendsViewHolder vh = new FriendsViewHolder(inflate); - // クリックイベントを登録 + // 削除ボタンを押したときのイベントを登録 vh.deleteButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = vh.getBindingAdapterPosition(); - // 処理はonItemClick()に丸投げ - onDeleteClick(v, position, friendDatas.get(position)); + // 処理はonDeleteClick()に丸投げ + onDeleteClick(v, position, friendData.get(position)); + } + }); + + // お気に入りに追加したときのイベントを登録 + vh.favoriteOutline.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int position = vh.getBindingAdapterPosition(); + // 処理はonFavoriteClick()に丸投げ + onFavoriteClick(v, position, friendData.get(position), vh.favorite); } }); @@ -136,25 +162,33 @@ @Override public void onBindViewHolder(@NonNull FriendsViewHolder holder, int position) { // 後からアイコンの登録をできるようにする - holder.nameView.setText(friendDatas.get(position).getName()); + holder.nameView.setText(friendData.get(position).getName()); + if (nemophila.getFavoriteFriends().contains(friendData.get(position).getId())) { + holder.favorite.setVisibility(View.VISIBLE); + } } @Override public int getItemCount() { - return friendDatas.size(); + return friendData.size(); } abstract void onDeleteClick(View view, int position, FriendDataModel friend); + abstract void onFavoriteClick(View view, int position, FriendDataModel friend, ImageView favorite); } // ViewHolder public class FriendsViewHolder extends RecyclerView.ViewHolder { + public ImageView favorite; + public ImageButton favoriteOutline; public ImageView iconView; public TextView nameView; public Button deleteButton; public FriendsViewHolder(@NonNull View itemView) { super(itemView); + favorite = itemView.findViewById(R.id.favorite); + favoriteOutline = itemView.findViewById(R.id.favorite_outline); 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/MyPageEditorActivity.java b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java index 6301b5d..4ff7896 100644 --- a/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java +++ b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java @@ -10,6 +10,7 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; @@ -31,7 +32,7 @@ myName.setText(name); //MyPageに戻るボタン - Button backButton = (Button) findViewById(R.id.backMyPage); + ImageButton backButton = (ImageButton) findViewById(R.id.backMyPage); backButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MyPageEditorActivity.this, MyPageActivity.class); diff --git a/app/src/main/java/com/example/nemophila/RequestedActivity.java b/app/src/main/java/com/example/nemophila/RequestedActivity.java index db2d1d9..5203dee 100644 --- a/app/src/main/java/com/example/nemophila/RequestedActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestedActivity.java @@ -57,9 +57,9 @@ friendViewModel.getRequested(uid); friendViewModel.getRequestedLiveData().observe(this, new Observer>() { @Override - public void onChanged(Collection accountNameJsons) { + public void onChanged(Collection accountNameJson) { requestedDataSet.clear(); - for (AccountNameJson acj: accountNameJsons) { + for (AccountNameJson acj: accountNameJson) { RequestedUserModel data = new RequestedUserModel(); data.setId(acj.getUid()); data.setName(acj.getName()); diff --git a/app/src/main/res/drawable/ic_star.xml b/app/src/main/res/drawable/ic_star.xml new file mode 100644 index 0000000..f4b4d6a --- /dev/null +++ b/app/src/main/res/drawable/ic_star.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_star_outline.xml b/app/src/main/res/drawable/ic_star_outline.xml new file mode 100644 index 0000000..59aef55 --- /dev/null +++ b/app/src/main/res/drawable/ic_star_outline.xml @@ -0,0 +1,5 @@ + + + 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 f499bfb..3b45611 100644 --- a/app/src/main/res/layout/activity_my_page_editor.xml +++ b/app/src/main/res/layout/activity_my_page_editor.xml @@ -112,9 +112,9 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/editName" - app:layout_constraintVertical_bias="0.149" /> + app:layout_constraintVertical_bias="0.149"/> -