마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리사이클러뷰와 뷰페이저사용시 질문입니다..

0 추천

안녕하십니까 현재 열심히 개발을 시작한 사회 초년생입니다. 잘부탁드립니다.

 

제가 이번에 물품 상세 정보 페이지를 작성하고있는데 상단은 물품의 이미지를 여러개 뷰페이저형태로 넣고 중간에는 물품에 대한정보들 그리고 하단에는 댓글기능을 넣으려고합니다.

하지만 문제는 하나의 리사이클러뷰에서 현재 상단에 뷰페이저형태로 처리하는 어댑

터가 프래그먼트페이저어댑터를 상속받고있고, 하단에 댓글기능을 처리하는 어댑터는 리사이클러뷰를 상속받고있는 상황입니다.

이두개를 같이 처리할수있는건가요.. 방법이궁금합니다 소스코드는 따로 올리겠습니다. 미완성이지만 방법좀 알려주시면 감사하겠습니다.

class TestFragmentAdapter extends FragmentPagerAdapter {
    public String TAG = getClass().getSimpleName();

    // 뷰페이저에 넣을 이미지 리스트
    private final int[] prodImages = new int[] {
            R.drawable.sample1,
            R.drawable.sample2,
            R.drawable.sample3,
            R.drawable.sample4,
            R.drawable.sample5,
            R.drawable.sample6
    };

    // 이미지 리스트안에 들어있는 이미지의 개수
    private int mCount = prodImages.length;

    public TestFragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    // 현재 프레그먼트에 있는 이미지를 가져오는 메소드
    @Override
    public Fragment getItem(int position) {
        return TestFragment.create(prodImages[position % prodImages.length]);
    }

    // 이미지 리스트에 들어있는 이미지의 개수를 가져오는 메소드
    @Override
    public int getCount() {
        return mCount;
    }

//    @Override
//    public CharSequence getPageTitle(int position) {
//        return TestFragmentAdapter.CONTENT[position % CONTENT.length];
//    }

    public static final class TestFragment extends Fragment {
        public String TAG = getClass().getSimpleName();
        private int image;

        public static TestFragment create(int image) {
            TestFragment fragment = new TestFragment();
            Bundle args = new Bundle();
            args.putInt("image", image);
            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            image = getArguments().getInt("image");
        }

        //뷰페이저에서 보여줄 뷰를 생성하는 부분
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            ImageView iv_prod = new ImageView(getActivity());
            iv_prod.setImageResource(image);

            LinearLayout layout = new LinearLayout(getActivity());
            layout.setLayoutParams(new ViewGroup.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
            layout.setGravity(Gravity.CENTER);
            layout.addView(iv_prod);

            return layout;
        }
    }

    public class DetailInfoAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
        private static final int TYPE_TOP = -1;
        private static final int TYPE_COMMENT = -2;

        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            if (viewType == TYPE_TOP) {
                View topView = View.inflate(parent.getContext(), R.layout.item_detail_info_top, null);
                return new TopViewHolder(topView);
            } else {
                View commentView = View.inflate(parent.getContext(), R.layout.item_detail_info_comment, null);
                return new CommentViewHolder(commentView);
            }
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        }

        @Override
        public int getItemCount() {
            return 0;
        }
    }

    class CommentViewHolder extends RecyclerView.ViewHolder {

        public CommentViewHolder(View itemView) {
            super(itemView);
        }
    }

    class TopViewHolder extends RecyclerView.ViewHolder {

        public TopViewHolder(View itemView) {
            super(itemView);
        }
    }
}
입문자입니당 (240 포인트) 님이 2017년 6월 8일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...