diff --git a/app/src/main/java/com/example/citrusclient/models/Account.java b/app/src/main/java/com/example/citrusclient/models/Account.java new file mode 100644 index 0000000..4e07e63 --- /dev/null +++ b/app/src/main/java/com/example/citrusclient/models/Account.java @@ -0,0 +1,46 @@ +package com.example.citrusclient.models; + +public class Account { + + private String accountId; + private String accountColor; + + public Account(){} + + public Account(String aid, String color) { + accountId = aid; + accountColor = color; + } + + public void setAccountId(String accountId) { + this.accountId = accountId; + } + + public void setAccountColor(String accountColor) { + this.accountColor = accountColor; + } + + public String getAccountId() { + return accountId; + } + + public String getAccountColor() { + return accountColor; + } + + @Override + public boolean equals(Object obj) { + if(obj instanceof Account) { + if(((Account) obj).getAccountId().equals(this.accountId)) { + return true; + } + } + return false; + } + + @Override + public int hashCode(){ + return this.accountId.hashCode(); + } + +} diff --git a/app/src/main/java/com/example/citrusclient/models/Book.java b/app/src/main/java/com/example/citrusclient/models/Book.java index eea8a6d..b536741 100644 --- a/app/src/main/java/com/example/citrusclient/models/Book.java +++ b/app/src/main/java/com/example/citrusclient/models/Book.java @@ -8,6 +8,7 @@ private String color; private String accountId; private String time; + private int favoriteCount; public Book(String accountId, Integer bookId, String title, boolean publicity, String color) { @@ -16,6 +17,7 @@ this.title = title; this.publicity = publicity; this.color = color; + this.favoriteCount = 0; } public Book(){ @@ -29,6 +31,7 @@ public void setBookId(int id) {bookId = id;} public void setAccountId(String a) {accountId = a;} public void setTime(String ti) {time = ti;} + public void setFavoritedCount(int f) {favoriteCount = f;} //Getter public String getTitle() {return title;} @@ -37,4 +40,5 @@ public int getBookId() {return bookId;} public String getAccountId() {return accountId;} public String getTime() {return time;} + public int getFavoritedCount() {return favoriteCount;} } diff --git a/app/src/main/java/com/example/citrusclient/models/BookModel.java b/app/src/main/java/com/example/citrusclient/models/BookModel.java new file mode 100644 index 0000000..862a0d1 --- /dev/null +++ b/app/src/main/java/com/example/citrusclient/models/BookModel.java @@ -0,0 +1,77 @@ +package com.example.citrusclient.models; + +public class BookModel { + + private int bookId; + private String title; + private boolean publicity; + private String color; + private String time; + private String accountId; + private String accountColor; + private int favoriteCount; + + public int getBookId() { + return bookId; + } + + public void setBookId(int bookId) { + this.bookId = bookId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public boolean isPublicity() { + return publicity; + } + + public void setPublicity(boolean publicity) { + this.publicity = publicity; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + + public String getAccountColor() { + return accountColor; + } + + public void setAccountColor(String accountColor) { + this.accountColor = accountColor; + } + + public int getFavoriteCount() { + return favoriteCount; + } + + public void setFavoriteCount(int favoriteCount) { + this.favoriteCount = favoriteCount; + } + + public String getAccountId() { + return accountId; + } + + public void setAccountId(String accountId) { + this.accountId = accountId; + } +} diff --git a/app/src/main/java/com/example/citrusclient/rest/BooksRest.java b/app/src/main/java/com/example/citrusclient/rest/BooksRest.java index 09d7db5..0119071 100644 --- a/app/src/main/java/com/example/citrusclient/rest/BooksRest.java +++ b/app/src/main/java/com/example/citrusclient/rest/BooksRest.java @@ -95,13 +95,13 @@ @Field("token") String token ); - @PUT("/{account_id}/books/{book_id}/favoriteCount") + @PUT("/{account_id}/books/{book_id}/registerFavoriteCount") Call registerFavoriteCount( @Path("account_id") String account_id, @Path("book_id") Integer book_id ); - @PUT("/{account_id}/books/{book_id}/favoriteCount") + @PUT("/{account_id}/books/{book_id}/unregisterFavoriteCount") Call unregisterFavoriteCount( @Path("account_id") String account_id, @Path("book_id") Integer book_id diff --git a/app/src/main/java/com/example/citrusclient/rest/FavoritesRest.java b/app/src/main/java/com/example/citrusclient/rest/FavoritesRest.java index 30b2273..2b4313c 100644 --- a/app/src/main/java/com/example/citrusclient/rest/FavoritesRest.java +++ b/app/src/main/java/com/example/citrusclient/rest/FavoritesRest.java @@ -1,8 +1,10 @@ package com.example.citrusclient.rest; import com.example.citrusclient.models.Book; +import com.example.citrusclient.models.BookModel; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import retrofit2.Call; @@ -18,13 +20,12 @@ //主{account_id}がいいねした本の一覧 @GET("accounts/{account_id}/favorites") - Call>> getFavoritesBooks( + Call> getFavoritesBooks( @Path("account_id") String accountId, @Query("token") String token ); //主{account_id}がいいねした誰か{other_account_id}の本の一覧 - @FormUrlEncoded @GET("accounts/{account_id}/favorites/{other_account_id}") Call> getFavoritesBooksById( @Path("account_id") String accountId, @@ -33,7 +34,6 @@ ); //主{account_id}のある本{book_id}をいいねした人の一覧 - @FormUrlEncoded @GET("accounts/{account_id}/books/{book_id}/favorited") Call> getFavoritedAccount( @Path("account_id") String accountId, diff --git a/app/src/main/java/com/example/citrusclient/viewmodels/BooksViewModel.java b/app/src/main/java/com/example/citrusclient/viewmodels/BooksViewModel.java index 4c309ba..ea47647 100644 --- a/app/src/main/java/com/example/citrusclient/viewmodels/BooksViewModel.java +++ b/app/src/main/java/com/example/citrusclient/viewmodels/BooksViewModel.java @@ -192,7 +192,7 @@ }); } - private void registerFavoriteCount(String accountId, Integer bookId){ + public void registerFavoriteCount(String accountId, Integer bookId){ Call call = booksRest.registerFavoriteCount(accountId, bookId); call.enqueue(new Callback() { @@ -212,7 +212,7 @@ }); } - private void unregisterFavoriteCount(String accountId, Integer bookId){ + public void unregisterFavoriteCount(String accountId, Integer bookId){ Call call = booksRest.unregisterFavoriteCount(accountId, bookId); call.enqueue(new Callback() { diff --git a/app/src/main/java/com/example/citrusclient/viewmodels/FavoritesViewModel.java b/app/src/main/java/com/example/citrusclient/viewmodels/FavoritesViewModel.java index b4c3842..825dbdd 100644 --- a/app/src/main/java/com/example/citrusclient/viewmodels/FavoritesViewModel.java +++ b/app/src/main/java/com/example/citrusclient/viewmodels/FavoritesViewModel.java @@ -1,9 +1,13 @@ package com.example.citrusclient.viewmodels; import com.example.citrusclient.models.Book; +import com.example.citrusclient.models.BookModel; import com.example.citrusclient.rest.FavoritesRest; +import java.lang.reflect.Array; +import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import androidx.lifecycle.MutableLiveData; @@ -18,10 +22,11 @@ private final Retrofit retrofit; private final FavoritesRest favoritesRest; - private final MutableLiveData>> favoritesBooksLiveData; + private final MutableLiveData> favoritesBooksLiveData; private final MutableLiveData> favoritesBookIdLiveData; private final MutableLiveData> favoritedAccountsLiveData; + public FavoritesViewModel(){ this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/citrus/") @@ -32,16 +37,15 @@ this.favoritesBookIdLiveData = new MutableLiveData<>(); this.favoritedAccountsLiveData = new MutableLiveData<>(); } - public MutableLiveData>> getFavoritesBooksLiveData(){return favoritesBooksLiveData;} + public MutableLiveData> getFavoritesBooksLiveData(){return favoritesBooksLiveData;} public MutableLiveData> getFavoritesBookIdLiveData(){return favoritesBookIdLiveData;} - public MutableLiveData> getFavoritedAccountsLiveData(){return favoritedAccountsLiveData;} + public MutableLiveData> getFavoritedAccountsLiveData(){return favoritedAccountsLiveData;} - //対応型変更 public void loadFavoritesBooks(String accountId, String token){ - Call>> call = favoritesRest.getFavoritesBooks(accountId,token); - call.enqueue(new Callback>>() { + Call> call = favoritesRest.getFavoritesBooks(accountId,token); + call.enqueue(new Callback>() { @Override - public void onResponse(Call>> call, Response>> response) { + public void onResponse(Call> call, Response> response) { if(response.isSuccessful()){ System.out.println("success : getFavoritesBooks"); favoritesBooksLiveData.setValue(response.body()); @@ -49,7 +53,7 @@ } @Override - public void onFailure(Call>> call, Throwable t) { + public void onFailure(Call> call, Throwable t) { System.out.println("NetworkError : getFavoritesBooks" + t); } }); diff --git a/app/src/main/java/com/example/citrusclient/views/FavoritesBooksFragment.java b/app/src/main/java/com/example/citrusclient/views/FavoritesBooksFragment.java index 31261d8..160d860 100644 --- a/app/src/main/java/com/example/citrusclient/views/FavoritesBooksFragment.java +++ b/app/src/main/java/com/example/citrusclient/views/FavoritesBooksFragment.java @@ -21,7 +21,10 @@ import com.example.citrusclient.Citrus; import com.example.citrusclient.R; +import com.example.citrusclient.models.Account; import com.example.citrusclient.models.Book; +import com.example.citrusclient.models.BookModel; +import com.example.citrusclient.viewmodels.BooksViewModel; import com.example.citrusclient.viewmodels.FavoritesViewModel; import java.util.ArrayList; @@ -75,7 +78,6 @@ } favoritesViewModel = new ViewModelProvider(this).get(FavoritesViewModel.class); - } @Override @@ -86,17 +88,19 @@ } - private HashMap> bookList; - HashMap books; - HashMap integerBookHashMap; - HashMap> data; + private List bookList; +// HashMap books; +// HashMap integerBookHashMap; +// HashMap> data; FavoritesViewModel favoritesViewModel; + //BooksViewModel booksViewModel; + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Citrus citrus = (Citrus) (getActivity().getApplication()); - bookList = new HashMap<>(); + bookList = new ArrayList<>(); // いいねした本の一覧を返すのに必要 RecyclerView recyclerView = view.findViewById(R.id.my_favorites_list); //いいねした本の一覧 @@ -116,30 +120,31 @@ } } - +//① class FavoritesBooksAdapter extends RecyclerView.Adapter { - private List books = new ArrayList<>(); + private List books = new ArrayList<>(); //private HashMap integerBookHashMap; //private HashMap> data; - FavoritesBooksAdapter(HashMap> favoritesBooksList) { //初期化 - - for (String account: favoritesBooksList.keySet()){ - for (int number: favoritesBooksList.get(account).keySet()){ - books.add(favoritesBooksList.get(account).get(number)); - } - } - // this.data = data; - // this.integerBookHashMap = new HashMap<>(); + FavoritesBooksAdapter(List favoritesBooksList) { //初期化 + books = favoritesBooksList; +// for (String account: favoritesBooksList.keySet()){ +// for (int number: favoritesBooksList.get(account).keySet()){ +// books.add(favoritesBooksList.get(account).get(number)); +// } +// } + // this.data = data; + // this.integerBookHashMap = new HashMap<>(); } - public void setFavoritesBooks(HashMap> favoritesBooksList) { - for (String account: favoritesBooksList.keySet()){ - for (int number: favoritesBooksList.get(account).keySet()){ - books.add(favoritesBooksList.get(account).get(number)); - } - } + public void setFavoritesBooks(List favoritesBooksList) { + books = favoritesBooksList; +// for (String account: favoritesBooksList.keySet()){ +// for (int number: favoritesBooksList.get(account).keySet()){ +// books.add(favoritesBooksList.get(account).get(number)); +// } +// } notifyDataSetChanged(); } @@ -165,10 +170,18 @@ // for (Integer bookId : bookMap.keySet()) { // Book book = bookMap.get(bookId); // if (count == position){ + +// } +// } +// } +// + // 他の人のid名を表示するのに必要 holder.other_id.setText(books.get(position).getAccountId()); + // 本の名前を表示 holder.favorites_book.setText(books.get(position).getTitle()); int parsedColor = Color.parseColor(books.get(position).getColor()); holder.favorites_book.setBackgroundTintList(ColorStateList.valueOf(parsedColor)); + Context context = holder.itemView.getContext(); holder.favorites_book.setOnClickListener(v -> { Activity activity = (Activity) context; @@ -178,6 +191,10 @@ ((MainActivity) activity).showFragment(new OtherHomeFragment()); }); + //ここにアイコンの色 + int other_iconColor = Color.parseColor(books.get(position).getAccountColor()); + holder.other_icon.setBackgroundTintList(ColorStateList.valueOf(other_iconColor)); + } @@ -185,16 +202,20 @@ TextView other_id; Button favorites_book; + Button other_icon; + public FavoritesBooksViewHolder(@NonNull View itemView) { super(itemView); favorites_book = itemView.findViewById(R.id.favorites_book); other_id = itemView.findViewById(R.id.other_id); + other_icon = itemView.findViewById(R.id.other_icon); } } + // これがないとclassにエラー @Override public int getItemCount() { return books.size(); - } // これがないとclassにエラー + } } diff --git a/app/src/main/res/layout/a_favorites_book.xml b/app/src/main/res/layout/a_favorites_book.xml index 89d0cc1..b036845 100644 --- a/app/src/main/res/layout/a_favorites_book.xml +++ b/app/src/main/res/layout/a_favorites_book.xml @@ -7,28 +7,44 @@ android:layout_margin="12dp" tools:ignore="ExtraText"> -