안드로이드 심심풀이/응용

[안드로이드 스튜디오] RecyclerView에 ViewPager 사용하기

훈땅콩 2019. 7. 22. 17:50
반응형

안녕하세요! 이번에는RecyclerView에 ViewPager 사용하는 방법에 대해 포스팅 합니다!

 

먼저 RecyclerView안에 ViewPager를 넣어주시고요!

 

RecyclerViewAdapter에서 선언을 해줍니다!

class ItemViewHolder extends RecyclerView.ViewHolder {

    private ViewPager vp;
    public ItemViewHolder(View itemView) {
        super(itemView);
        vp = itemView.findViewById(R.id.imgV);

다음은 ViewPagerAdapter를 만들어 줍니다!

class FragmentAdapter extends FragmentStatePagerAdapter {

    // ViewPager에 들어갈 Fragment들을 담을 리스트
    private ArrayList<Fragment> fragments = new ArrayList<>();

    // 필수 생성자
    FragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

    // List에 Fragment를 담을 함수
    void addItem(Fragment fragment) {
        fragments.add(fragment);
    }
}

그다음 Adapter를 선언해 주시고!

class ItemViewHolder extends RecyclerView.ViewHolder {

    public ViewPager vp;

    public FragmentAdapter bannerPagerAdapter;

 

바인드 부분에서 처리를 해주면 끝!

public void setConfirmTitle(String text) {
        ((TextView) findViewById(R.id.dialog_confirm_btn)).setText(text);
    }

    void onBind(Home_Data data ,int position) {

        vp.setId(position+1);
        bannerPagerAdapter = new FragmentAdapter(fragmentManager);
        vp.setAdapter(bannerPagerAdapter);

        for (int i = 0; i < data.getListImage().size(); i++) {
            ImageFragment imageFragment = new ImageFragment();
            imageFragment.setImageBitmap(data.getListImage().get(i));
            bannerPagerAdapter.addItem(imageFragment);
        }
        bannerPagerAdapter.notifyDataSetChanged();

바인드 부분을 처리할때 vp.setId(position+1)을 하지 않으시면 RecyclerView에 첫번째 아이템에만 ViewPager가 적용되니 꼭 넣어주세요!

반응형