diff --git a/app/src/main/java/com/example/tampopo_client/Tampopo.java b/app/src/main/java/com/example/tampopo_client/Tampopo.java index 6ca0763..4708cbd 100644 --- a/app/src/main/java/com/example/tampopo_client/Tampopo.java +++ b/app/src/main/java/com/example/tampopo_client/Tampopo.java @@ -3,9 +3,10 @@ import android.app.Application; public class Tampopo extends Application { - public String getUserId; + //いらないので下記2つをコメントアウトしました + //public String getUserId; - public String getToken; + //public String getToken; private String token; private String userId; private String password; diff --git a/app/src/main/java/com/example/tampopo_client/models/FriendPair.java b/app/src/main/java/com/example/tampopo_client/models/FriendPair.java index 4f9c35f..3ba71cd 100644 --- a/app/src/main/java/com/example/tampopo_client/models/FriendPair.java +++ b/app/src/main/java/com/example/tampopo_client/models/FriendPair.java @@ -10,6 +10,7 @@ this.user1Id = user1Id; } + public Integer getId() { return id; } diff --git a/app/src/main/java/com/example/tampopo_client/resources/FriendsResource.java b/app/src/main/java/com/example/tampopo_client/resources/FriendsResource.java index d323d6c..7c91307 100644 --- a/app/src/main/java/com/example/tampopo_client/resources/FriendsResource.java +++ b/app/src/main/java/com/example/tampopo_client/resources/FriendsResource.java @@ -2,6 +2,8 @@ import com.example.tampopo_client.models.FriendPair; +import java.util.List; + import retrofit2.Call; import retrofit2.http.DELETE; import retrofit2.http.Field; @@ -20,6 +22,13 @@ @Field("user1-id") String user1Id ); +// @GET("friends/{pair_id}/") +// Call getFriend( +// @Query("token") String token, +// @Path("pair_id") String pairId +// ); + + // @GET("friends/{pair_id}/") Call getFriend( @Query("token") String token, @@ -31,4 +40,11 @@ @Query("token") String token, @Path("pair_id") String pair_id ); + + //新しくサーバーで定義したので追加しました + @GET("friends/users/{user-id}") + Call> getFriends( + @Path("user-id") String userId, + @Query("token") String token + ); } diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java index 91b8021..6e958c5 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java @@ -45,7 +45,8 @@ } public void loadFriends(String userId, String token){ - Call> call = usersResource.getFriends(userId, token); + //userResourceではなくfriendResourceに書き換え + Call> call = friendsResource.getFriends(userId, token); call.enqueue(new Callback>() { @Override diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendListFragment.java b/app/src/main/java/com/example/tampopo_client/views/FriendListFragment.java index 003375b..17730c5 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendListFragment.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendListFragment.java @@ -31,6 +31,8 @@ // TODO: Customize parameters private int mColumnCount = 1; + private MyFriendRecyclerViewAdapter adapter; + /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). @@ -39,7 +41,15 @@ } // TODO: Customize parameter initialization - @SuppressWarnings("unused") +// @SuppressWarnings("unused") +// public static FriendListFragment newInstance(int columnCount) { +// FriendListFragment fragment = new FriendListFragment(); +// Bundle args = new Bundle(); +// args.putInt(ARG_COLUMN_COUNT, columnCount); +// fragment.setArguments(args); +// return fragment; +// } + public static FriendListFragment newInstance(int columnCount) { FriendListFragment fragment = new FriendListFragment(); Bundle args = new Bundle(); @@ -57,48 +67,113 @@ } } +// @Override +// public View onCreateView(LayoutInflater inflater, ViewGroup container, +// Bundle savedInstanceState) { +// View view = inflater.inflate(R.layout.fragment_friend_list_list, container, false); +// +// RecyclerView recyclerView = view.findViewById(R.id.list); +// Context context = view.getContext(); +// +// // Add some sample items. +// //for (int i = 1; i <= 30; i++) { +// // FriendContent.addItem(new FriendContent.FriendItem(Integer.toString(i), "ユーザ" + i)); +// //} +// +// // Set the adapter +// if (view instanceof RecyclerView) { +// Context context = view.getContext(); +// RecyclerView recyclerView = (RecyclerView) view; +// if (mColumnCount <= 1) { +// recyclerView.setLayoutManager(new LinearLayoutManager(context)); +// } else { +// recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); +// } +// recyclerView.setAdapter(new MyFriendRecyclerViewAdapter(FriendContent.ITEMS)); +// } +// adapter = new MyFriendRecyclerViewAdapter(FriendContent.ITEMS); +// recyclerView.setAdapter(adapter); +// return view; +// } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_friend_list_list, container, false); - // Add some sample items. - //for (int i = 1; i <= 30; i++) { - // FriendContent.addItem(new FriendContent.FriendItem(Integer.toString(i), "ユーザ" + i)); - //} + RecyclerView recyclerView = view.findViewById(R.id.list); + Context context = view.getContext(); - // Set the adapter - if (view instanceof RecyclerView) { - Context context = view.getContext(); - RecyclerView recyclerView = (RecyclerView) view; - if (mColumnCount <= 1) { - recyclerView.setLayoutManager(new LinearLayoutManager(context)); - } else { - recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); - } - recyclerView.setAdapter(new MyFriendRecyclerViewAdapter(FriendContent.ITEMS)); + if (mColumnCount <= 1) { + recyclerView.setLayoutManager(new LinearLayoutManager(context)); + } else { + recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); } + + // adapterをここで初期化 + adapter = new MyFriendRecyclerViewAdapter(FriendContent.ITEMS); + recyclerView.setAdapter(adapter); + return view; } + +// @Override +// public void onViewCreated(View view, Bundle savedInstanceState) { +// super.onViewCreated(view, savedInstanceState); +// FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); +// +// String userId = ((Tampopo) ((FriendActivity) view.getContext()).getApplication()).getUserId; +// String token = ((Tampopo) ((FriendActivity) view.getContext()).getApplication()).getToken; +// friendViewModel.loadFriends(userId, token); +// +// friendViewModel.getFriendIdsLiveData().observe(getViewLifecycleOwner(), new Observer>() { +// +// @Override +// public void onChanged(List friendIds) { +// for (String i : friendIds) { +// FriendContent.addItem(new FriendContent.FriendItem(i, "")); +// } +// adapter.notifyDataSetChanged(); +// } +// }); +// } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); - String userId = ((Tampopo) ((FriendActivity) view.getContext()).getApplication()).getUserId; - String token = ((Tampopo) ((FriendActivity) view.getContext()).getApplication()).getToken; +//自分の情報を取得する + Tampopo app = (Tampopo) requireActivity().getApplication(); + String userId = app.getUserId(); + String token = app.getToken(); + +//サーバーからフレンド一覧を取得する friendViewModel.loadFriends(userId, token); - friendViewModel.getFriendIdsLiveData().observe(getViewLifecycleOwner(), new Observer>() { - - @Override - public void onChanged(List friendIds) { - for (String i : friendIds) { - FriendContent.addItem(new FriendContent.FriendItem(i, "")); +//一旦旧コードをコメントアウトしました。 +// friendViewModel.getFriendIdsLiveData().observe(getViewLifecycleOwner(), new Observer>() { +// @Override +// public void onChanged(List friendIds) { +// // 一度リセットして新しいリストを追加 +// FriendContent.clear(); +// for (String id : friendIds) { +// FriendContent.addItem(new FriendContent.FriendItem(id, "")); +// } +// // adapterがクラス変数なのでここで使える +// adapter.notifyDataSetChanged(); +// } +// }); + friendViewModel.getFriendIdsLiveData().observe(getViewLifecycleOwner(), friendIds -> { + FriendContent.clear(); + if (friendIds != null) { + for (String id : friendIds) { + FriendContent.addItem(new FriendContent.FriendItem(id, "")); } } + adapter.notifyDataSetChanged(); }); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java index 5786821..bdde5e5 100644 --- a/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java +++ b/app/src/main/java/com/example/tampopo_client/views/MyFragmentAdapter.java @@ -28,3 +28,4 @@ return 2; } } + diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFriendRecyclerViewAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFriendRecyclerViewAdapter.java index 22ef86b..e2a231d 100644 --- a/app/src/main/java/com/example/tampopo_client/views/MyFriendRecyclerViewAdapter.java +++ b/app/src/main/java/com/example/tampopo_client/views/MyFriendRecyclerViewAdapter.java @@ -1,40 +1,105 @@ +//旧コードは念の為コメントアウトしています。 +//package com.example.tampopo_client.views; +// +//import android.view.LayoutInflater; +//import android.view.ViewGroup; +//import android.widget.TextView; +// +//import com.example.tampopo_client.databinding.FragmentFriendListBinding; +//import com.example.tampopo_client.views.placeholder.FriendContent; +// +//import java.util.List; +// +//import androidx.recyclerview.widget.RecyclerView; +// +///** +// * {@link RecyclerView.Adapter} that can display a {@link FriendContent.FriendItem}. +// * TODO: Replace the implementation with code for your data type. +// */ +//public class MyFriendRecyclerViewAdapter extends RecyclerView.Adapter { +// +// private final List mValues; +// +// public MyFriendRecyclerViewAdapter(List items) { +// mValues = items; +// } +// +// @Override +// public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { +// +// return new ViewHolder(FragmentFriendListBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); +// +// } +// +// @Override +// public void onBindViewHolder(final ViewHolder holder, int position) { +// holder.mItem = mValues.get(position); +// //holder.mIdView.setText(mValues.get(position).id); +// holder.mContentView.setText(mValues.get(position).name); +// } +// +// @Override +// public int getItemCount() { +// return mValues.size(); +// } +// +// public class ViewHolder extends RecyclerView.ViewHolder { +// //public final TextView mIdView; +// public final TextView mContentView; +// public FriendContent.FriendItem mItem; +// +// public ViewHolder(FragmentFriendListBinding binding) { +// super(binding.getRoot()); +// //mIdView = binding.itemNumber; +// mContentView = binding.content; +// } +// +// @Override +// public String toString() { +// return super.toString() + " '" + mContentView.getText() + "'"; +// } +// } +//} + package com.example.tampopo_client.views; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; -import com.example.tampopo_client.databinding.FragmentFriendListBinding; -import com.example.tampopo_client.views.placeholder.FriendContent; - -import java.util.List; - import androidx.recyclerview.widget.RecyclerView; -/** - * {@link RecyclerView.Adapter} that can display a {@link FriendContent.FriendItem}. - * TODO: Replace the implementation with code for your data type. - */ +import com.example.tampopo_client.R; +import com.example.tampopo_client.views.placeholder.FriendContent.FriendItem; + +import java.util.List; + public class MyFriendRecyclerViewAdapter extends RecyclerView.Adapter { - private final List mValues; + private final List mValues; - public MyFriendRecyclerViewAdapter(List items) { + public MyFriendRecyclerViewAdapter(List items) { mValues = items; } + //各行のビューを作成する @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - - return new ViewHolder(FragmentFriendListBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); - + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.fragment_friend_list, parent, false); + return new ViewHolder(view); } + + //データをビューに紐付ける @Override public void onBindViewHolder(final ViewHolder holder, int position) { - holder.mItem = mValues.get(position); - //holder.mIdView.setText(mValues.get(position).id); - holder.mContentView.setText(mValues.get(position).name); + FriendItem item = mValues.get(position); + holder.userIdView.setText(item.id); + holder.contentView.setText(item.name); + holder.userIcon.setImageResource(R.drawable.friend); } @Override @@ -43,19 +108,15 @@ } public class ViewHolder extends RecyclerView.ViewHolder { - //public final TextView mIdView; - public final TextView mContentView; - public FriendContent.FriendItem mItem; + public final ImageView userIcon; + public final TextView contentView; + public final TextView userIdView; - public ViewHolder(FragmentFriendListBinding binding) { - super(binding.getRoot()); - //mIdView = binding.itemNumber; - mContentView = binding.content; - } - - @Override - public String toString() { - return super.toString() + " '" + mContentView.getText() + "'"; + public ViewHolder(View view) { + super(view); + userIcon = view.findViewById(R.id.usericon); + contentView = view.findViewById(R.id.content); + userIdView = view.findViewById(R.id.userId); } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendContent.java b/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendContent.java index 3c48f8e..f399d6f 100644 --- a/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendContent.java +++ b/app/src/main/java/com/example/tampopo_client/views/placeholder/FriendContent.java @@ -40,6 +40,11 @@ ITEM_MAP.put(item.id, item); } + public static void clear() { + ITEMS.clear(); + ITEM_MAP.clear(); + } + //private static FriendItem createPlaceholderItem(int position) { // return new FriendItem(String.valueOf(position), "ユーザー名 " , makeDetails(position));