1c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn/*
2c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Copyright (C) 2011 The Android Open Source Project
3c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *
4c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
5c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * you may not use this file except in compliance with the License.
6c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * You may obtain a copy of the License at
7c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *
8c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
9c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn *
10c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * Unless required by applicable law or agreed to in writing, software
11c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
12c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * See the License for the specific language governing permissions and
14c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn * limitations under the License.
15c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn */
16c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
17c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornpackage com.example.android.supportv4.app;
18c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
19c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.os.Bundle;
20c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.util.Log;
21c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.LayoutInflater;
22c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.View;
23c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.view.View.OnClickListener;
24def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.ViewGroup;
25c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ArrayAdapter;
26c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.Button;
27c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.ListView;
28c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackbornimport android.widget.TextView;
29c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
30def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.Fragment;
31def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.FragmentActivity;
32def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.FragmentManager;
33def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.FragmentPagerAdapter;
34def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.fragment.app.ListFragment;
35def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.viewpager.widget.ViewPager;
36def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas
37def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport com.example.android.supportv4.Cheeses;
38def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport com.example.android.supportv4.R;
39def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas
40a506d183f617f84df878c96fff54b532812cd6d7Dianne Hackborn//BEGIN_INCLUDE(complete)
4102e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackbornpublic class FragmentPagerSupport extends FragmentActivity {
42c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    static final int NUM_ITEMS = 10;
43c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
4402e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn    MyAdapter mAdapter;
4502e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn
4602e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn    ViewPager mPager;
47c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
48c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    @Override
49c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    protected void onCreate(Bundle savedInstanceState) {
50c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        super.onCreate(savedInstanceState);
51c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        setContentView(R.layout.fragment_pager);
52c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
5302e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        mAdapter = new MyAdapter(getSupportFragmentManager());
5402e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn
5502e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        mPager = (ViewPager)findViewById(R.id.pager);
5602e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        mPager.setAdapter(mAdapter);
57c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
58c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        // Watch for button clicks.
59af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn        Button button = (Button)findViewById(R.id.goto_first);
60c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        button.setOnClickListener(new OnClickListener() {
61e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas            @Override
62c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            public void onClick(View v) {
63af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn                mPager.setCurrentItem(0);
64af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn            }
65af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn        });
66af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn        button = (Button)findViewById(R.id.goto_last);
67af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn        button.setOnClickListener(new OnClickListener() {
68e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas            @Override
69af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn            public void onClick(View v) {
70af846a1f43fc6779d184e91ccb26e790e87bcabaDianne Hackborn                mPager.setCurrentItem(NUM_ITEMS-1);
71c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            }
72c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        });
73c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    }
74c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
7502e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn    public static class MyAdapter extends FragmentPagerAdapter {
7602e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        public MyAdapter(FragmentManager fm) {
7702e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn            super(fm);
7802e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        }
79c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
8002e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        @Override
8102e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        public int getCount() {
8202e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn            return NUM_ITEMS;
8302e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        }
8402e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn
8502e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        @Override
8602e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        public Fragment getItem(int position) {
8702e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn            return ArrayListFragment.newInstance(position);
8802e82399ee8e5efe5c836314896e04699a9c8e93Dianne Hackborn        }
89c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    }
90c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
91c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    public static class ArrayListFragment extends ListFragment {
92c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        int mNum;
93c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
94c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        /**
95c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * Create a new instance of CountingFragment, providing "num"
96c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * as an argument.
97c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         */
98c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        static ArrayListFragment newInstance(int num) {
99c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            ArrayListFragment f = new ArrayListFragment();
100c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
101c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            // Supply num input as an argument.
102c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            Bundle args = new Bundle();
103c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            args.putInt("num", num);
104c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            f.setArguments(args);
105c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
106c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            return f;
107c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
108c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
109c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        /**
110c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * When creating, retrieve this instance's number from its arguments.
111c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         */
112c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
113c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public void onCreate(Bundle savedInstanceState) {
114c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            super.onCreate(savedInstanceState);
115c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            mNum = getArguments() != null ? getArguments().getInt("num") : 1;
116c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
117c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
118c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        /**
119c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * The Fragment's UI is just a simple text view showing its
120c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         * instance number.
121c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn         */
122c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
123c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public View onCreateView(LayoutInflater inflater, ViewGroup container,
124c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn                Bundle savedInstanceState) {
125c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            View v = inflater.inflate(R.layout.fragment_pager_list, container, false);
126c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            View tv = v.findViewById(R.id.text);
127c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            ((TextView)tv).setText("Fragment #" + mNum);
128c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            return v;
129c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
130c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
131c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
132c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public void onActivityCreated(Bundle savedInstanceState) {
133c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            super.onActivityCreated(savedInstanceState);
134c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            setListAdapter(new ArrayAdapter<String>(getActivity(),
135b1b8c06afc67ea8da6e390dc5be84182d839ede5Dianne Hackborn                    android.R.layout.simple_list_item_1, Cheeses.sCheeseStrings));
136c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
137c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn
138c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        @Override
139c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        public void onListItemClick(ListView l, View v, int position, long id) {
140c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn            Log.i("FragmentList", "Item clicked: " + id);
141c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn        }
142c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn    }
143c644c91b91b83a6b400a57b02671f4ef7b7a810bDianne Hackborn}
144a506d183f617f84df878c96fff54b532812cd6d7Dianne Hackborn//END_INCLUDE(complete)
145