diff --git a/.idea/misc.xml b/.idea/misc.xml index 961a5e2..4343ab5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -15,10 +15,12 @@ + + diff --git a/app/src/main/java/com/example/nemophila/Nemophila.java b/app/src/main/java/com/example/nemophila/Nemophila.java index 37d9e2b..14f1aed 100644 --- a/app/src/main/java/com/example/nemophila/Nemophila.java +++ b/app/src/main/java/com/example/nemophila/Nemophila.java @@ -30,7 +30,7 @@ //フィルターのデータ private HashSet selectGenres = new HashSet<>(); private HashSet selectFriends = new HashSet<>(); - private HashSet favoriteFriends = new HashSet<>(); + private HashSet favoriteFriends; //Account関連のGetter public String getName() { @@ -100,11 +100,11 @@ return selectFriends; } public HashSet getFavoriteFriends() { - if(favoriteFriends.isEmpty()){ + if(favoriteFriends == null){ SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE); - favoriteFriends = (HashSet) preferences.getStringSet("favoriteFriends", new HashSet<>()); + favoriteFriends = new HashSet<>(preferences.getStringSet("favoriteFriends", new HashSet<>())); } - return new HashSet<>(favoriteFriends); + return favoriteFriends; } //Setter @@ -146,18 +146,21 @@ SharedPreferences.Editor editor = preferences.edit(); editor.putFloat("cameraLatitude", (float) cameraLatitude); this.cameraLatitude = cameraLatitude; + editor.commit(); } public void setCameraLongitude(double cameraLongitude) { SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putFloat("cameraLongitude", (float) cameraLongitude); this.cameraLongitude = cameraLongitude; + editor.commit(); } public void setZoom(float zoom) { SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putFloat("zoom", zoom); this.zoom = zoom; + editor.commit(); } //フィルター関連のSetter @@ -170,8 +173,9 @@ public void setFavoriteFriends(String favoriteFriend) { SharedPreferences preferences = getSharedPreferences("prefData", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); - editor.putStringSet("favoriteFriends", favoriteFriends); this.favoriteFriends.add(favoriteFriend); + editor.putStringSet("favoriteFriends", favoriteFriends); + editor.commit(); } //フィルターを取り除く @@ -182,6 +186,6 @@ this.selectFriends.remove(selectFriend); } public void removeFavoriteFriends(String favoriteFriend){ - this.selectFriends.remove(favoriteFriend); + this.favoriteFriends.remove(favoriteFriend); } } diff --git a/app/src/main/java/com/example/nemophila/RequestedActivity.java b/app/src/main/java/com/example/nemophila/RequestedActivity.java index 5203dee..8b4b2ad 100644 --- a/app/src/main/java/com/example/nemophila/RequestedActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestedActivity.java @@ -4,9 +4,12 @@ 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; +import android.app.AlertDialog; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; @@ -14,6 +17,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; +import android.widget.Toast; import com.example.nemophila.entities.Account; import com.example.nemophila.entities.AccountNameJson; @@ -24,10 +28,11 @@ import java.util.List; public class RequestedActivity extends AppCompatActivity { - - @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_requested); + //初期化 FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); Nemophila nemophila = (Nemophila) this.getApplication(); @@ -36,9 +41,6 @@ String uid = nemophila.getUid(); String token = nemophila.getToken(); - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_requested); - Button returnButton = (Button)findViewById(R.id.CancelButton); returnButton.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ @@ -48,11 +50,50 @@ }); RecyclerView rv = findViewById(R.id.requestedList); - RequestedAdapter adapter = new RequestedAdapter(requestedDataSet); + RequestedAdapter adapter = new RequestedAdapter(requestedDataSet) { + @Override + void onOkButtonClick(View view, int position, RequestedUserModel userModel) { + new AlertDialog.Builder(RequestedActivity.this) + .setTitle("確認") + .setMessage("フレンド申請を承諾します") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Toast.makeText(RequestedActivity.this, userModel.getName(), Toast.LENGTH_SHORT).show(); + System.out.println("承諾ボタンが押されました: " + userModel.getName()); +// friendViewModel.putFriend(uid, userModel.getId(), token); + } + }) + .setNegativeButton("Cancel", null) + .create() + .show(); + } + @Override + void onNoButtonClick(View view, int position, RequestedUserModel userModel) { + new AlertDialog.Builder(RequestedActivity.this) + .setTitle("警告") + .setMessage("フレンド申請を拒否します") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Toast.makeText(RequestedActivity.this, userModel.getName(), Toast.LENGTH_SHORT).show(); + System.out.println("拒否ボタンが押されました: " + userModel.getName()); +// friendViewModel.deleteRequested(uid, userModel.getId(), token); + } + }) + .setNegativeButton("Cancel", null) + .create() + .show(); + } + }; + + RecyclerView.ItemDecoration itemDecoration = + new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); + + rv.addItemDecoration(itemDecoration); rv.setHasFixedSize(true); rv.setLayoutManager(llm); - rv.setAdapter(adapter); friendViewModel.getRequested(uid); friendViewModel.getRequestedLiveData().observe(this, new Observer>() { @@ -72,7 +113,7 @@ } //Adapter - public class RequestedAdapter extends RecyclerView.Adapter { + abstract public class RequestedAdapter extends RecyclerView.Adapter { private List list; public RequestedAdapter(List list) { this.list = list; @@ -86,6 +127,23 @@ public RequestedViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_requested_activity, parent,false); RequestedViewHolder vh = new RequestedViewHolder(inflate); + + vh.okButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int position = vh.getBindingAdapterPosition(); + onOkButtonClick(view, position, list.get(position)); + } + }); + + vh.noButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + int position = vh.getBindingAdapterPosition(); + onNoButtonClick(view, position, list.get(position)); + } + }); + return vh; } @@ -98,15 +156,22 @@ public int getItemCount() { return list.size(); } + + abstract void onOkButtonClick(View view, int position, RequestedUserModel userModel); + abstract void onNoButtonClick(View view, int position, RequestedUserModel userModel); } //ViewHolder public class RequestedViewHolder extends RecyclerView.ViewHolder { public TextView nameView; + public Button okButton; + public Button noButton; public RequestedViewHolder(@NonNull View view) { super(view); nameView = (TextView) view.findViewById(R.id.textView3); + okButton = view.findViewById(R.id.okButton); + noButton = view.findViewById(R.id.noButton); } } diff --git a/app/src/main/res/layout/activity_mypage.xml b/app/src/main/res/layout/activity_mypage.xml index 956e605..9dcff08 100644 --- a/app/src/main/res/layout/activity_mypage.xml +++ b/app/src/main/res/layout/activity_mypage.xml @@ -127,10 +127,10 @@ android:layout_marginBottom="20dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.5" + app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/myPageEdit" - app:layout_constraintVertical_bias="0"> + app:layout_constraintVertical_bias="1.0">