简体   繁体   English

查看Pager Android

[英]View Pager Android

I'm trying to implement a View Pager from : http://developer.android.com/training/animation/screen-slide.html 我正在尝试从以下网站实现“查看寻呼机”: http : //developer.android.com/training/animation/screen-slide.html

But I seem to have a problem when it comes to creating the page number. 但是在创建页码时,我似乎遇到了问题。 When debugging the downloaded zip from the previous mentioned website, first method called is create(int pageNumber) and afterwards onCreate() where you're getting the page number. 从前面提到的网站调试下载的zip时,第一个调用的方法是create(int pageNumber),然后是onCreate(),您将从中获取页码。 In my case, it's the other way around, therefore I get a null pointer exception. 就我而言,这是另一回事,因此我得到了一个空指针异常。

Here is my current implementation of the View Pager: 这是我当前对View Pager的实现:

public class SingleCheckInDisplay extends android.support.v4.app.Fragment {
    private Checkin data;
    private FragmentManager fragmentManager;

    private List<CheckinUser> enlooped;
    private TextView checkInLocation;
    private TextView checkInDescription;
    private TextView checkInTime;
    private Button cancelBtn;
    private ImageButton singleCheckInEnloopBtn;
    private ImageButton singleCheckInCancelBtn;
    private HorizontalListView enloopedFriends;
    public static final String ARG_PAGE = "page";
    private int mPageNumber;


    public static SingleCheckInDisplay create(int pageNumber) {
        SingleCheckInDisplay fragment = new SingleCheckInDisplay();
        Bundle args = new Bundle();
        args.putInt(ARG_PAGE, pageNumber);
        fragment.setArguments(args);
        return fragment;
    }

    public SingleCheckInDisplay(Checkin data) {
        this.data = data;
    }

    public SingleCheckInDisplay() {
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mPageNumber = 2;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_single_check_in_display, container, false);
        enlooped = data.getCheckinUsers();

        fragmentManager = getActivity().getSupportFragmentManager();

        ImageView main_pic = (ImageView) v.findViewById(R.id.main_pic);
        checkInLocation = (TextView) v.findViewById(R.id.single_check_in_location);
        checkInDescription = (TextView) v.findViewById(R.id.single_check_in_desc);
        checkInTime = (TextView) v.findViewById(R.id.single_check_in_time_text);
        checkInTime.setText(data.getCheckinDate().toString());
        enloopedFriends = (HorizontalListView) v.findViewById(R.id.sinlge_check_in_enlooped_list);

        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.sm_profile)
                .showImageForEmptyUri(R.drawable.sm_profile)
                .showImageOnFail(R.drawable.sm_profile)
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .imageScaleType(ImageScaleType.EXACTLY)
                .considerExifParams(true)
                .displayer(new SimpleBitmapDisplayer())
                .build();
        ImageLoader.getInstance().displayImage(data.getImages(), main_pic, options);

        checkInDescription.setText(data.getDescription());
        checkInLocation.setText(data.getPlaceAddressAndName());
        checkInLocation.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // Set a bundle with place ID, the rest will be obtained by calling Graph API
                Bundle args = new Bundle();
                args.putString("placeID", data.getPlaceId());

                SingleCheckInPlace scp = new SingleCheckInPlace();
                scp.setArguments(args);
                FragmentManager fm = getActivity().getSupportFragmentManager();
                fm.beginTransaction().replace(R.id.container, scp).addToBackStack(null).commit();
            }
        });

        SingleCheckInAdapter adapter = new SingleCheckInAdapter(getActivity(), enlooped);
        enloopedFriends.setAdapter(adapter);

        cancelBtn = (Button) v.findViewById(R.id.single_ck_display_cancel_button);
        cancelBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MapsFilterFragment firstFragment = new MapsFilterFragment();
                fragmentManager.beginTransaction().add(R.id.container, firstFragment).commit();
            }
        });

        singleCheckInEnloopBtn = (ImageButton) v.findViewById(R.id.single_check_in_enloop_btn);
        singleCheckInEnloopBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "Enlooped !", Toast.LENGTH_SHORT).show();
                fragmentManager.popBackStack();
            }
        });

        singleCheckInCancelBtn = (ImageButton) v.findViewById(R.id.single_check_in_no_btn);
        singleCheckInCancelBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "Maybe next time", Toast.LENGTH_SHORT).show();
                goBack();
            }
        });
        return v;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    @Override
    public void onDetach() {
        super.onDetach();
    }

    private void goBack() {
        fragmentManager.popBackStack();
    }

    public int getPageNumber() {
        return mPageNumber;
    }
}

And here is the miplementation of the Pager itself: 这是寻呼机本身的功能:

public class ScreenSlideFragment extends android.support.v4.app.Fragment {

    private ViewPager mPager;
    private PagerAdapter mPagerAdapter;
    private static final int NUM_PAGES = 11;

    public ScreenSlideFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_screen_slide, container, false);

        mPager = (ViewPager) view.findViewById(R.id.pager);
        mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
        mPager.setAdapter(mPagerAdapter);

        return view;
    }

    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
            super(fm);
        }

        @Override
        public android.support.v4.app.Fragment getItem(int position) {
            return SingleCheckInDisplay.create(position);
        }

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

}

DO like this 像这样

ViewPager mviewPager=(ViewPage)findViewById(R.id.urcontainer);
mviewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override 
    public void OnPageSelected(int position) {
      int page_number=position; //this will give u the current page number    
   }
});

` `

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM