Use callback pattern in Welcome activity/adapter.

This commit is contained in:
Dmitry Brant 2017-05-26 17:06:03 -04:00
parent 8656098dc5
commit 040789ca2e
2 changed files with 29 additions and 9 deletions

View file

@ -13,6 +13,7 @@ public class WelcomeActivity extends BaseActivity {
@BindView(R.id.welcomePager) ViewPager pager; @BindView(R.id.welcomePager) ViewPager pager;
@BindView(R.id.welcomePagerIndicator) CirclePageIndicator indicator; @BindView(R.id.welcomePagerIndicator) CirclePageIndicator indicator;
private WelcomePagerAdapter adapter = new WelcomePagerAdapter();
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -24,11 +25,19 @@ public class WelcomeActivity extends BaseActivity {
} }
ButterKnife.bind(this); ButterKnife.bind(this);
setUpAdapter(); pager.setAdapter(adapter);
indicator.setViewPager(pager);
adapter.setCallback(new WelcomePagerAdapter.Callback() {
@Override
public void onYesClicked() {
finish();
}
});
} }
private void setUpAdapter() { @Override
pager.setAdapter(new WelcomePagerAdapter()); public void onDestroy() {
indicator.setViewPager(pager); adapter.setCallback(null);
super.onDestroy();
} }
} }

View file

@ -1,6 +1,6 @@
package fr.free.nrw.commons; package fr.free.nrw.commons;
import android.app.Activity; import android.support.annotation.Nullable;
import android.support.v4.view.PagerAdapter; import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -11,6 +11,11 @@ import butterknife.OnClick;
public class WelcomePagerAdapter extends PagerAdapter { public class WelcomePagerAdapter extends PagerAdapter {
private static final int PAGE_FINAL = 4; private static final int PAGE_FINAL = 4;
private Callback callback;
public interface Callback {
void onYesClicked();
}
static final int[] PAGE_LAYOUTS = new int[]{ static final int[] PAGE_LAYOUTS = new int[]{
R.layout.welcome_wikipedia, R.layout.welcome_wikipedia,
@ -20,6 +25,10 @@ public class WelcomePagerAdapter extends PagerAdapter {
R.layout.welcome_final R.layout.welcome_final
}; };
public void setCallback(@Nullable Callback callback) {
this.callback = callback;
}
@Override @Override
public int getCount() { public int getCount() {
return PAGE_LAYOUTS.length; return PAGE_LAYOUTS.length;
@ -48,14 +57,16 @@ public class WelcomePagerAdapter extends PagerAdapter {
container.removeView((View) obj); container.removeView((View) obj);
} }
public static class ViewHolder { class ViewHolder {
public ViewHolder(View view) { ViewHolder(View view) {
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
} }
@OnClick(R.id.welcomeYesButton) @OnClick(R.id.welcomeYesButton)
void onClicked(View view) { void onClicked() {
((Activity) view.getContext()).finish(); if (callback != null) {
callback.onYesClicked();
}
} }
} }
} }