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="新しいパスワード"/>