mobile application development myrent viewpager · 10/10/2016  · mobile application development...

21
Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 1/21

Upload: others

Post on 03-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

Mobile Application DevelopmentMyRent ViewPager

Waterford Institute of Technology

October 10, 2016

John Fitzgerald

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 1/21

Page 2: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ViewPagerLayout Manager

• User allowed swipe views or pages left and right• Convenient to use with fragments

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 2/21

Page 3: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ViewPager

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 3/21

Page 4: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityModify Manifest

• ResidencePagerActivity replaces ResidenceActivity• Rename not mandatory - simply for self-documenting reason• Nominate parent activity in manifest

<activityandroid:name=".activities.ResidencePagerActivity"android:label="@string/app_name" ><meta−data android:name="android.support.PARENT_ACTIVITY"

android:value=".activities.ResidenceListActivity"/></activity>

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 4/21

Page 5: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityClass skeleton

Android ViewPager• Layout manager allowing left and right swipe through data

public class ResidencePagerActivity extends AppCompatActivity {private ViewPager viewPager;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

}}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 5/21

Page 6: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityViewPager object becomes activity content view

public class ResidencePagerActivity extends AppCompatActivity {private ViewPager viewPager;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

viewPager = new ViewPager(this);viewPager.setId(R.id.viewPager);setContentView(viewPager);

}}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 6/21

Page 7: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityResource id required for ViewPager

<resources><item type="id" name="viewPager" />

</resources>

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 7/21

Page 8: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityInitialize local reference to residence list

private void setResidenceList() {MyRentApp app = (MyRentApp) getApplication();portfolio = app.portfolio;residences = portfolio.residences;

}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 8/21

Page 9: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

Abstract classA brief digression

Abstract class• Optionally may include abstract methods.• Like interfaces, cannot instantiate.• Subclasses must implement abstract methods.

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 9/21

Page 10: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

Abstract classA brief digression

abstract class FragmentStatePagerAdapter {int pos;Fragment fragment;

public void onCreate() {// TODO Complete implementation

}

abstract int getCount();abstract Fragment getItem(int pos);

}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 10/21

Page 11: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

Abstract classA brief digression

public class PagerAdapter extends FragmentStatePagerAdapter {

@Overrideint getCount() {// TODO Auto−generated method stubreturn 0;

}

@OverrideFragment getItem(int pos) {// TODO Auto−generated method stubreturn null;

}}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 11/21

Page 12: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

PagerAdapterFragmentStatePagerAdapter

class PagerAdapter extends FragmentStatePagerAdapter {...@Overridepublic int getCount() {return residences.size();

}@Overridepublic Fragment getItem(int pos) {

Residence res = residences.get(pos);Bundle args = new Bundle();args.putSerializable(ResidenceFragment.EXTRA_RESIDENCE_ID, res.

id);ResidenceFragment fragment = new ResidenceFragment();fragment.setArguments(args);return fragment;

}}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 12/21

Page 13: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

PagerAdapterFragmentStatePagerAdapter

• Uses a Fragment to manage each page• Manages save & restore fragment state• Frugal with memory usage

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 13/21

Page 14: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityEnsure correct residence displayed

void setCurrentItem() {Long resId = (Long) getIntent()

.getSerializableExtra(ResidenceFragment.EXTRA_RESIDENCE_ID);

for (int i = 0; i < residences.size(); i++) {if (residences.get(i).id.equals(resId)) {

viewPager.setCurrentItem(i);break;

}}

}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 14/21

Page 15: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityonCreate

@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);viewPager = new ViewPager(this);viewPager.setId(R.id.viewPager);setContentView(viewPager);setResidenceList();pagerAdapter = new PagerAdapter(getSupportFragmentManager(),

residences);viewPager.setAdapter(pagerAdapter);setCurrentItem();

}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 15/21

Page 16: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityListener interface

Optional feature used here to change title in action bar

ViewPager.OnPageChangeListener

@Overridepublic void onPageScrolled(int position, float positionOffset, intpositionOffsetPixels)

@Overridepublic void onPageSelected(int position)

@Overridepublic void onPageScrollStateChanged(int state)

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 16/21

Page 17: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ResidencePagerActivityListener interface

public void onPageScrolled(int position, float positionOffset, intpositionOffsetPixels) {

Residence residence = residences.get(position);if (residence.geolocation != null) {

setTitle(residence.geolocation);}

}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 17/21

Page 18: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ViewPager.OnPageChangeListenerExplained using demo class

public class ViewPager {

// Nested interface containing single abstract methodinterface OnPageChangeListener {void onPageSelected(int pos);

}}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 18/21

Page 19: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

ViewPager.OnPageChangeListenerExplained using demo class

public class ResidencePagerActivity implements ViewPager.OnPageChangeListener

{

// Must implement OnPageChangeListener interface method@Overridepublic void onPageSelected(int pos) {// TODO Auto−generated method stub

}

}

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 19/21

Page 20: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

Referenced Material

1. Android Documentation: ViewPagerhttp://developer.android.com/reference/android/support/v4/view/ViewPager.html

[Accessed 2016-10-10]2. Android Programming The Big Nerd Ranch Guide. Philips B.& Hardy B. Chapter 11. 20133. Oracle: Abstract Methods and Classeshttps://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

[Accessed 2016-10-10]

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 20/21

Page 21: Mobile Application Development MyRent ViewPager · 10/10/2016  · Mobile Application Development MyRent ViewPager Waterford Institute of Technology October 10, 2016 John Fitzgerald

Waterford Institute of Technology, Mobile Application Development MyRent ViewPager 21/21