Skip to content

Instantly share code, notes, and snippets.

@victoraguilarc
Created May 17, 2018 15:55
Show Gist options
  • Save victoraguilarc/a4bf9394ba6d608b0b8c40b05fe44acd to your computer and use it in GitHub Desktop.
Save victoraguilarc/a4bf9394ba6d608b0b8c40b05fe44acd to your computer and use it in GitHub Desktop.
VMP for TAb layout Fragment Android
package com.xiberty.jiwaki.agenda.fragments.events;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import com.arlib.floatingsearchview.FloatingSearchView;
import com.xiberty.jiwaki.R;
import com.xiberty.jiwaki.MainActivity;
import com.xiberty.jiwaki.agenda.AgendaAPI;
import com.xiberty.jiwaki.contrib.adapters.ViewPagerAdapter;
import com.xiberty.jiwaki.contrib.api.WS;
import butterknife.BindView;
import butterknife.ButterKnife;
public class EventsFragment extends Fragment implements EventsContract.View {
private final String TAG = EventsFragment.class.getSimpleName();
private MainActivity activity;
private ProgressDialog progressDialog;
private AgendaAPI agendaAPI;
private EventsPresenter presenter;
@BindView(R.id.searchView)
FloatingSearchView searchView;
@BindView(R.id.tabLayout)
TabLayout tabLayout;
@BindView(R.id.viewPager)
ViewPager viewPager;
public EventsFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = ((MainActivity)getActivity());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_agenda, container, false);
ButterKnife.bind(this, rootView); // DI
setHasOptionsMenu(true);
// Initialize MVP
agendaAPI = WS.makeService(AgendaAPI.class);
presenter = new EventsPresenter(this, agendaAPI);
// setup UI
setupProgressDiaglog();
setupSearchBar();
setupTabs();
return rootView;
}
private void setupTabs() {
final ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());
// Fragments
viewPagerAdapter.appendItem(new TodayEventsFragment());
viewPagerAdapter.appendItem(new NextEventsFragment());
viewPagerAdapter.appendItem(new CategorizedEventsFragment());
// Tabs
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.tab_agenda_today).toUpperCase()));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.tab_agenda_next).toUpperCase()));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.tab_agenda_by_categories).toUpperCase()));
// Configure and link tabs with pages
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
viewPager.setAdapter(viewPagerAdapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition());}
@Override public void onTabUnselected(TabLayout.Tab tab) {}
@Override public void onTabReselected(TabLayout.Tab tab) {}
});
}
private void setupSearchBar() {
searchView.attachNavigationDrawerToMenuButton(activity.getDrawerLayout());
searchView.setOnQueryChangeListener(new FloatingSearchView.OnQueryChangeListener() {
@Override
public void onSearchTextChanged(String oldQuery, final String newQuery) {
// TODO FIX THIS
}
});
searchView.setOnMenuItemClickListener(new FloatingSearchView.OnMenuItemClickListener() {
@Override
public void onActionMenuItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
// syncAllData(); // TODO COMPLETE THIS
break;
}
}
});
searchView.setCloseSearchOnKeyboardDismiss(true);
searchView.setDismissOnOutsideClick(true);
searchView.setOnFocusChangeListener(new FloatingSearchView.OnFocusChangeListener() {
@Override
public void onFocus() {
// dispatchFragmentLoader(searchView.getQuery()); // TODO FIX THIS
}
@Override
public void onFocusCleared() {
// dispatchFragmentLoader(null); // TODO FIX THIS
}
});
}
@Override
public void setupProgressDiaglog() {
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage(getResources().getString(R.string.dialog_load_locations));
progressDialog.setCancelable(true);
progressDialog.setIndeterminate(true);
}
@Override public void showProgress() { progressDialog.show(); }
@Override public void hideProgress() { progressDialog.dismiss(); }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment