티스토리 뷰


이전까지 작업내용 참조 

 => https://4whomtbts.tistory.com/51

이 링크로 가시면 해당 포스팅에 해당하는 커밋의 소스코드를 볼 수 있습니다

 => https://github.com/4whomtbts/AND001/tree/dc5a6653be25108ae489eb382e862cfe6e38157a



○ 하고싶었던 것


물론, 이 프로젝트에서 내가 원래 의도했던 것은, 각각의 게임이름을 누르면

해당하는 새로운 프래그먼트로 교체하는 것이었지만.

그 프래그먼트로 간 상태에서, 원래의 프래그먼트로 가는 기능을 먼저 만들고자 했다.














본인에게는 recyclerView 의 adapter 가 있다

customs/GameTypeAdapter


public class GameTypeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
Context _ctx;
public static class GameTypeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
Context _ctx;
ImageView ivPicture;
TextView gameTitle;


public GameTypeViewHolder(View view, Context context) {
super(view);
this._ctx = context;
gameTitle = view.findViewById(R.id.game_title);
view.setOnClickListener(this);

}
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"테스트",Toast.LENGTH_LONG).show();
MainActivity activity = (MainActivity)_ctx;
activity.switchContent(0);
}
}
private ArrayList<GameTypes> gameTypesList;
private ViewPager mViewPager;
public GameTypeAdapter(ArrayList<GameTypes> gameTypesList, Context context) {
this.gameTypesList = gameTypesList;
this._ctx = context;
}
@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,_ctx);
}
@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();
}
}

여기서 핵심은 

1. MainActivity 에서부터 Context 를 전달해서 받는다

2. 그 Context 를 가지고, MainActivity에 fragment 를 전환하기 위해 내가 임의로 만든 함수를 실행한다.

        @Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"테스트",Toast.LENGTH_LONG).show();
MainActivity activity = (MainActivity)_ctx;
activity.switchContent(0);
}

_ctx 를 type Assertion 해서 가져왔습니다! 이제 activity.switchContent(0) 를 보러가겠습니다.

public void switchContent(int position){
mViewPager.setCurrentItem(0);
}
mViewPager = (ViewPager) findViewById(R.id.container);




#안드로이드 #recyclerView #fragment #recyclerView에서 fragment 전환하기

댓글