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

뷰페이저 관련해서 궁금한 점이 있습니다.

0 추천

 

안녕하세요.

아래의 뷰페이저 관련해서 궁금한 점이 있어서 글을 올렸습니다.

짧게 구성이 되어 있는 뷰페이저인데, 제가 이부분에 관련해서, 확실하게 구조에 대해알지 못해서,

다들 시간이 없으시고  바쁘시겠지만 한번 설명좀 듣고 싶어서, 이렇게 글을 썼습니다.

제가 풀이해본 결과는 아래와 같습니다.

글자가 조금 추가되는 부분은 아래의 답변 부분에 이어서 달아보았습니다.

 

현재 액티비티에는 5개의 이미지가 자리하고 있으며 , 각 이미지들을 수첩 형식으로 옆으로 넘어가면서

볼수 있게 해주는 적합한 기능인 뷰페이저이다. View들을 Page를 넘기듯 보여주는 AdapterView의 일종이며

여기서는 어레이 리스트를 사용해서,  이미지와 , 제목, 확률로 구성이 되어있고,  이미지같은 경우에는

 integer이라는 정수값을 줘서 총 5개의 이미지 대한 번호가 어레이리스트에 순차적으로 저장이 되어 있고

그 아래의 제목같은 경우는 5개의 제목과 5개의 확률을 String 형식의 어레이리스트에 각각 저장을 했습니다.


또한 SectionPagerAdapter이라고 해서 , 뷰페이저에서 각각의 정보 페이지(Fragment)를 하나씩 만들어주고

그렇게 프래그넌트를 만들때, PlaceholderFragment를 만들어서 뷰페이저에게 준다.

그러면 뷰페이저는 placeHolderFragment를 하나씩 보여주게 되며 fragment_sub2.xml PlaceHolderFragment

가 화면을 만들떄 쓰이게 된다.
 

<미약..>

static String ARG_SECTION_NUMBER = "section_number"; 같은 경우에는 키값으로 사용함으로써,

사용 목적에 대해서는 public Fragment getItem(int position) 메소드에서 Bundle 생성시 키 값으로 사용하려고 한

것이고

그래서 onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

해당하는화면 포지션을 가져올 때 사용합니다.

final int position = getArguments().getInt(ARG_SECTION_NUMBER);

 

import android.content.Intent;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;

public class PX_ViewPager extends AppCompatActivity {

    private SectionsPagerAdapter mSectionsPagerAdapter;

    public static ArrayList<Integer> at_thumnail = new ArrayList<>();   // 이미지들 담는것
    public static ArrayList<String> at_title = new ArrayList<>();      // 제목들 담는것
   

    private ViewPager mViewPager;

    static String  ARG_SECTION_NUMBER = "section_number";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setTitle("타이틀");
        setContentView(R.layout.activity_movie_viewpager);

        //  뷰페이저에 나타나는 5가지 사진
        at_thumnail.add(R.drawable.1);
        at_thumnail.add(R.drawable.2);
        at_thumnail.add(R.drawable.3);
        at_thumnail.add(R.drawable.4);
        at_thumnail.add(R.drawable.5);

        at_title.add("1번클릭");
        at_title.add("2번클릭");
        at_title.add("3번클릭");
        at_title.add("4번클릭");
        at_title.add("5번클릭");

공산당 (1,960 포인트) 님이 2016년 11월 26일 질문
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);
    }

    public static class PlaceholderFragment extends Fragment {


        public PlaceholderFragment() {
        }


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {

            final int position = getArguments().getInt(ARG_SECTION_NUMBER);

            View rootView = inflater.inflate(R.layout.fragment_sub2, container, false);

            TextView title = (TextView) rootView.findViewById(R.id.title);
            title.setText(at_title.get(position));

            ImageView thunmail = (ImageView) rootView.findViewById(R.id.thunmail);
            thunmail.setImageResource(at_thumnail.get(position));

            return rootView;
        }
    }


    public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

        @Override
        public Fragment getItem(int position) {

            Bundle args = new Bundle(); // 번들 생성
            args.putInt(ARG_SECTION_NUMBER, position); // 인텐튼의 데이터전달과 같다. (키,값)

            //프래그먼트를 생성
            PlaceholderFragment fragment = new PlaceholderFragment();
            fragment.setArguments(args);

            return fragment;
        }

        @Override
        public int getCount() {
            return 5;
        }
    }


}

답변 달기

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