Skip to content

Instantly share code, notes, and snippets.

@cliffgr
Last active October 26, 2016 12:23
Show Gist options
  • Save cliffgr/8542171379b7d9488251c81490232e29 to your computer and use it in GitHub Desktop.
Save cliffgr/8542171379b7d9488251c81490232e29 to your computer and use it in GitHub Desktop.
Fragment Switcher
package com.ethos.main.ui.fragments.DemoNewList;
public class DemoMapFragment extends Fragment implements OnMapReadyCallback {
private static final String ARG_PARAM1 = "param1";
private GoogleMap mMap;
private FrameLayout frameLayoutBubble;
private ArrayList<Place_v3> list;
public DemoMapFragment() {
// Required empty public constructor
}
public DemoMapFragment newInstance(ArrayList<Place_v3> places) {
Log.e("DemoMapFragment", "newInstance: "+places.size());
DemoMapFragment fragment = new DemoMapFragment();
Bundle args = new Bundle();
args.putSerializable(ARG_PARAM1, places);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
if (getArguments() != null) {
list = (ArrayList<Place_v3>) getArguments().getSerializable(ARG_PARAM1);
Log.e("DemoMapFragment", "onCreate: "+list.size());
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_demo_map, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setupViews();
}
private void setupViews() {
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
frameLayoutBubble = (FrameLayout) getActivity().findViewById(R.id.framelayout_bubble);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
setUpMap(list);
}
public void setUpMap(ArrayList<Place_v3> places){
for(Place_v3 place: places){
mMap.addMarker(new MarkerOptions().position(new LatLng(place.getLat(), place.getLng())).icon(BitmapDescriptorFactory.defaultMarker()));
}
}
}
public class StoresFragment extends Fragment implements View.OnClickListener, Response.Listener<Place>, Response.ErrorListener, DemoListFragment.LoadMoreInterface {
private static final String LIST = "list";
private static final String MAP = "map";
private static final int REQUEST_CODE=999;
private FloatingActionButton goButton;
private ArrayList<Place_v3> results = new ArrayList<>();
private int nextPage = 1;
private int pagesCount = 1;
private Filter filter;
public static StoresFragment newInstance() {
return new StoresFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_store, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
switchFragment(new DemoListFragment(this).newInstance(this,null), LIST);
goButton = (FloatingActionButton) view.findViewById(R.id.fab);
goButton.setOnClickListener(this);
filter=new Filter();
init(nextPage,filter);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.filter_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.filter_button:{
Intent filterActivity = new Intent(getActivity(), FilterActivity.class);
filterActivity.putExtra("filter", filter);
startActivityForResult(filterActivity,REQUEST_CODE);
getActivity().overridePendingTransition(R.anim.slide_in_up,R.anim.no_change);
}
default:
return super.onOptionsItemSelected(item);
}
}
private void switchFragment(Fragment fragment, String tag) {
getFragmentManager().beginTransaction().replace(R.id.frame_container, fragment, tag).commit();
}
@Override
public void onClick(View v) {
String tag = getCurrentFragmentTag();
if (tag.equals(LIST)) {
Log.e("passDataToFragments", "onClick: "+MAP );
switchFragment(DemoMapFragment.newInstance(results), MAP);
goButton.setImageResource(R.drawable.listview);
} else if (tag.equals(MAP)) {
Log.e("passDataToFragments", "onClick: "+LIST );
switchFragment(new DemoListFragment(this).newInstance(this,results), LIST);
goButton.setImageResource(R.drawable.mapview);
}
}
private void init(int currentPage, Filter filter) {
BasicArvieRequest request = BasicArvieRequest.Builder.<Place>getInstance()
.newRequest(BasicArvieRequest.RequestType.REQUEST_PLACES_FILTER, Place.class)
.addParam(ArvieRestfulApi.PARAM_LOGIN_SESSION_ID, Doers.getSessionKey())
.addParam(ArvieRestfulApi.PARAM_LOGIN_DEVICE_ID, Doers.getDeviceId())
.addParam(ArvieRestfulApi.PARAM_TARGET_LAT, String.valueOf(Doers.getmLastLocation().getLatitude()))
.addParam(ArvieRestfulApi.PARAM_TARGET_LNG, String.valueOf(Doers.getmLastLocation().getLongitude()))
.addParam(ArvieRestfulApi.PARAM_TARGET_DISTANCE,String.valueOf(filter.getStoreDistanceDouble()/1000))
.addParam(ArvieRestfulApi.PARAM_TARGET_DEFAULT_DISTANCE,(filter.isStoreDistanceStatus())? "0":"1")
.addParam("page", String.valueOf(currentPage))
.setResponseListener(this)
.setErrorResponseListener(this)
.build();
Doers.getClient().addToRequestQueue(request);
}
@Override
public void onResponse(Place response) {
switch (response.getStatus()) {
case 1: {
Logger.Loge(getClass(), "OnResponse HasMore :" + response.getHasMore() + " CurrentPage " + response.getCurrentPage() + " Count Pages :" + response.getPagesCount() + "Places Count " + response.getResults().size());
if (response.getCurrentPage() == 1) {
results.clear();
pagesCount = response.getPagesCount();
} else {
results.remove(results.size() - 1);
}
results.addAll(response.getResults());
if (response.getHasMore()) {
results.add(null);
nextPage = response.getCurrentPage() + 1;
} else {
nextPage = response.getCurrentPage() + 1;
}
passDataToFragments(results);
}
break;
default: {
}
}
}
public void passDataToFragments(ArrayList<Place_v3> data) {
Fragment f = getCurrentFragment();
Log.e("passDataToFragments", "passDataToFragments: "+f.getTag() );
if (f instanceof DemoListFragment) {
((DemoListFragment) f).populate(data);
}
}
@Override
public void onErrorResponse(VolleyError error) {
VolleyErrorHelper.viewErrorMessage(error);
VolleyErrorHelper.sendErrorMessage(error);
}
public String getCurrentFragmentTag() {
Fragment fragment = getFragmentManager().findFragmentById(R.id.frame_container);
return fragment.getTag();
}
public Fragment getCurrentFragment() {
return getFragmentManager().findFragmentById(R.id.frame_container);
}
@Override
public void onLoadMore() {
if (nextPage <= pagesCount)
init(nextPage,filter);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == REQUEST_CODE) {
filter= (Filter) data.getExtras().getSerializable("filter");
Log.e("999", "onActivityResult: "+" -> " + filter.getStoreDistance());
nextPage=1;
init(nextPage,filter);
}
}
}
@cliffgr
Copy link
Author

cliffgr commented Oct 26, 2016

screenshot from 2016-10-26 15 21 02

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment