diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java index 02785cb..89066d2 100644 --- a/app/src/main/java/com/example/nemophila/FriendActivity.java +++ b/app/src/main/java/com/example/nemophila/FriendActivity.java @@ -16,6 +16,7 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import com.example.nemophila.entities.AccountNameJson; import com.example.nemophila.viewmodels.FriendViewModel; @@ -25,8 +26,6 @@ import java.util.List; public class FriendActivity extends AppCompatActivity { - private FriendActivityAdapter adapter; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -35,7 +34,6 @@ // 初期化 List friendsDataset = new ArrayList<>(); // 1行分の情報を持つDataModelを格納するリスト RecyclerView rv = findViewById(R.id.friendsList); // recyclerViewを取得 - adapter = new FriendActivityAdapter(friendsDataset); // adapterを取得 FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得 Nemophila nemophila = (Nemophila) this.getApplication(); @@ -43,7 +41,7 @@ //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 LinearLayoutManager llm = new LinearLayoutManager(this); - // 詳細不明(おまじない) + // データ1つ1つの区切りが分かるように線を引く RecyclerView.ItemDecoration itemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); rv.addItemDecoration(itemDecoration); @@ -51,6 +49,15 @@ rv.setLayoutManager(llm); String myUid = nemophila.getUid(); // 自身のidを取得 + String myToken = nemophila.getToken(); // 自身のtokenを取得 + // getFriendsの通信が呼び出されて、フレンドの一覧をfriendsDatasetに格納し、Adapterにセットする + FriendActivityAdapter adapter = new FriendActivityAdapter(friendsDataset) { + @Override + void onItemClick(View view, int position, FriendDataModel friend) { + Toast.makeText(FriendActivity.this, friend.getName(), Toast.LENGTH_SHORT).show(); +// friendViewModel.deleteFriend(myUid, friend.getId(), myToken); + } + }; friendViewModel.getFriends(myUid); // 自身のフレンドの一覧を取得するメソッドを呼び出す friendViewModel.getFriendsLiveData().observe(this, new Observer>() { @@ -62,12 +69,12 @@ for (AccountNameJson friend : friends) { FriendDataModel data = new FriendDataModel(); data.setName(friend.getName()); + data.setId(friend.getUid()); friendsDataset.add(data); - - //RecyclerViewをonChangedが呼ばれるたび表示(アダプターを更新してRecyclerViewにセット) - adapter.setList(friendsDataset); - rv.setAdapter(adapter); } + + adapter.setList(friendsDataset); + rv.setAdapter(adapter); } }); @@ -83,33 +90,50 @@ // ----------- RecyclerView用の内部クラス ------------// // Adapter public class FriendActivityAdapter extends RecyclerView.Adapter { - private List list; + private List friendDatas; - public FriendActivityAdapter(List list) { - this.list = list; + public FriendActivityAdapter(List friendDatas) { + this.friendDatas = friendDatas; } - public void setList(List list) { - this.list = list; + public void setList(List friendDatas) { + this.friendDatas = friendDatas; } @NonNull @Override public FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int ViewType) { + // layoutXMLからViewを生成 View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_friends_activity, parent,false); + // ViewHolderを生成 FriendsViewHolder vh = new FriendsViewHolder(inflate); + + // クリックイベントを登録 + vh.deleteButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int position = vh.getBindingAdapterPosition(); + // 処理はonItemClick()に丸投げ + onItemClick(v, position, friendDatas.get(position)); + } + }); + return vh; } @Override public void onBindViewHolder(@NonNull FriendsViewHolder holder, int position) { // 後からアイコンの登録をできるようにする - holder.nameView.setText(list.get(position).getName()); + holder.nameView.setText(friendDatas.get(position).getName()); } @Override public int getItemCount() { - return list.size(); + return friendDatas.size(); + } + + void onItemClick(View view, int position, FriendDataModel friend) { + // このメソッドをActivity内でオーバーライドして、クリックイベントの処理を設定する } } @@ -130,13 +154,18 @@ // DataModel public static class FriendDataModel { private String name; + private String id; public String getName() { return name; } + public String getId() { + return id; + } public void setName(String name) { this.name = name; } + public void setId(String id) { this.id = id;} } } \ No newline at end of file