package com.code44.finance.ui; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import com.code44.finance.R; import com.code44.finance.adapters.NavigationAdapter; public class NavigationFragment extends BaseFragment implements AdapterView.OnItemClickListener { private NavigationAdapter adapter; private NavigationListener navigationListener; private NavigationAdapter.NavigationScreen pendingNavigationScreen; @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof NavigationListener) { navigationListener = (NavigationListener) activity; } else { throw new IllegalArgumentException("Activity " + activity.getClass().getName() + " must implement " + NavigationListener.class.getName()); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_navigation, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // Get views final ListView listView = (ListView) view.findViewById(R.id.listView); // Setup adapter = new NavigationAdapter(getActivity()); listView.setAdapter(adapter); listView.setOnItemClickListener(this); if (pendingNavigationScreen != null) { adapter.setSelectedNavigationScreen(pendingNavigationScreen); pendingNavigationScreen = null; } } @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { final NavigationAdapter.NavigationScreen navigationScreen = ((NavigationAdapter.NavigationItem) adapter.getItem(position)).getNavigationScreen(); adapter.setSelectedNavigationScreen(navigationScreen); navigationListener.onNavigationItemSelected(navigationScreen); } public void setSelected(NavigationAdapter.NavigationScreen navigationScreen) { if (adapter == null) { pendingNavigationScreen = navigationScreen; } else { adapter.setSelectedNavigationScreen(navigationScreen); } } public static interface NavigationListener { public void onNavigationItemSelected(NavigationAdapter.NavigationScreen navigationScreen); } }