티스토리 뷰
기존 베이스 코드는 https://4whomtbts.tistory.com/49 참조하세요.
의도
본인에게는, RecyclerView 에서의 Contents 를 정의해주는 GameTypeAdapter class 가 있다.
customs/GameTypeAdapter
package com.example.admin.myapplication.customs;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.admin.myapplication.R;
import java.util.ArrayList;
public class GameTypeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static class GameTypeViewHolder extends RecyclerView.ViewHolder implements {
ImageView ivPicture;
TextView gameTitle;
public GameTypeViewHolder(View view) {
super(view);
gameTitle = view.findViewById(R.id.game_title);
}
}
private ArrayList<GameTypes> gameTypesList;
public GameTypeAdapter(ArrayList<GameTypes> gameTypesList) {
this.gameTypesList = gameTypesList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.game_type_recycler_row,parent,false);
return new GameTypeViewHolder(v);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position){
GameTypeViewHolder gvholder = (GameTypeViewHolder)holder;
gvholder.gameTitle.setText(gameTypesList.get(position).gameTitle);
}
@Override
public int getItemCount() {
return gameTypesList.size();
}
}
이 코드를 간략하게 이해하고 넘어가자.
우리의 RecyclerView 는 결정적으로 Fragment_Fourth 에서 그려지는 것이다.
fragmentClasses/Fragement_Fourth.java
public class Fragment_Fourth extends Fragment {
public Fragment_Fourth(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
RecyclerView mRecyclerView;
RecyclerView.LayoutManager mLayoutManager;
View view = inflater.inflate(R.layout.fragment_fourth,container,false);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recylcer_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
ArrayList<GameTypes> GameTypesArrayList = new ArrayList<>();
GameTypesArrayList.add(new GameTypes("리그오브레전드"));
GameTypesArrayList.add(new GameTypes("배틀그라운드"));
GameTypesArrayList.add(new GameTypes("스타크래프트"));
GameTypesArrayList.add(new GameTypes("포트나이트"));
GameTypeAdapter myAdapter = new GameTypeAdapter(GameTypesArrayList);
mRecyclerView.setAdapter(myAdapter);
return view;
}
}
코드가 길고 읽기 싫어보이지만, 우리는 RecyclerView 에 초점을 두고 있기 때문에, 핵심 코드만 보겠습니다.
RecyclerView mRecyclerView;
GameTypeAdapter myAdapter = new GameTypeAdapter(GameTypesArrayList);
mRecyclerView.setAdapter(myAdapter);
Adapter 가 간단히 무엇인지 얘기해보면, RecyclerView 는 그것 자체로는 View 일 뿐이다.
하지만, 우리는 그 View 를 우리가 의도하는 기능을 넣어서 사용하고싶기 때문에
Adapter 라는 것을 만들어서, 그곳에서 우리의 RecyclerView 에 무엇을 채워넣고
어떠한 기능을 갖게 만들것인지 정의하는 것이다.
이제 코드에 대한 개념적인 설명이 되었으니, Toast Message 를 RecyclerView의 item 이 클릭되었을 때 출력해보자
public class GameTypeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static class GameTypeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
ImageView ivPicture;
TextView gameTitle;
public GameTypeViewHolder(View view) {
super(view);
gameTitle = view.findViewById(R.id.game_title);
view.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"테스트",Toast.LENGTH_LONG).show();
}
}
private ArrayList<GameTypes> gameTypesList;
public GameTypeAdapter(ArrayList<GameTypes> gameTypesList) {
this.gameTypesList = gameTypesList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.game_type_recycler_row,parent,false);
return new GameTypeViewHolder(v);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position){
GameTypeViewHolder gvholder = (GameTypeViewHolder)holder;
gvholder.gameTitle.setText(gameTypesList.get(position).gameTitle);
}
@Override
public int getItemCount() {
return gameTypesList.size();
}
}
○ implements 하기
public static class GameTypeViewHolder extends RecyclerView.ViewHolder {
GameTypeViewHolder 는 각각의 아이템을 정의하는 nest class 입니다. 이 글의 시작에서 보았던 어플리케이션에서 해당 부분을 보면.
위에 각각 숫자 하나하나를 구현해주는 것입니다. 그리고 우리는 이것에 onClick 이라는 기능을 추가해주겠다! 하는겁니다.
○ onClick
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"테스트",Toast.LENGTH_LONG).show();
}
위 코드는 매우 직관적입니다. 단순히 Toast 를 보여주는거니깐요.
이렇게 간단하게 RecyclerView 의 item 에 onClickListener 를 붙여보았습니다.
끝!
'안드로이드' 카테고리의 다른 글
Spinner item이 클릭이 안 될 때 (0) | 2020.01.12 |
---|---|
RecyclerView 에서 Fragment 전환하기 (2) | 2019.02.12 |
Fragment 와 ViewPager 함께 쓰기 (7) | 2019.02.11 |
ViewPager 가 TabLayout 을 침범할 때 (0) | 2019.02.11 |
- Total
- Today
- Yesterday
- 14714 플래너
- 함수포인터 오버라이트
- 14714 공부법
- CMake 반복문
- 복습 어플
- CMake run protoc
- aws 프리티어 요금청구
- 14714 review
- buffer-over-flow
- 14714 앱
- 복습 계획어플
- CMake for
- 14714 복습법
- function pointer overflow
- CMake get file name
- review reminder
- react-native
- CMake 강좌
- 토리파 공부법
- 14714 공부법 어플리케이션
- CMAke 파일이름 추출
- CMake run proto compiler
- aws 청구문의
- CMake for문
- CMake get_filename_Component
- 14714 어플리케이션
- CMake 기초
- CMake probouf
- get_filename_component
- 14714 어플
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |