Created
May 17, 2018 15:55
-
-
Save victoraguilarc/a4bf9394ba6d608b0b8c40b05fe44acd to your computer and use it in GitHub Desktop.
VMP for TAb layout Fragment Android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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