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