package com.mehmetakiftutuncu.eshotroid.fragment; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.TextView; import com.mehmetakiftutuncu.eshotroid.BuildConfig; import com.mehmetakiftutuncu.eshotroid.R; import com.mehmetakiftutuncu.eshotroid.adapter.BusListAdapter; /** Fragment of the favorite busses page * * @author mehmetakiftutuncu */ public class FavoriteBussesFragment extends Fragment { /** Interface for ensuring the implementation of loading and selecting * busses */ public interface FavoriteBussesListener { /** Loads favorite busses */ public void onFavoriteBussesLoaded(); /** Sets the item click listener of the given list view * * @param listView {@link AllBussesFragment#listView} */ public void onSetFavoritedBusSelected(ListView listView); } /** Reference to the activity that implements {@link FavoriteBussesListener} */ private FavoriteBussesListener listenerActivity; /** {@link ListView} in which the list of favorite busses will be shown */ private ListView listView; /** Information text that will be shown when there is no favorited bus */ private TextView info; /** {@link BusListAdapter} of the list of favorite busses */ private BusListAdapter busListAdapter; /** Tag for debugging */ private static final String LOG_TAG = "Eshotroid_FavoriteBussesFragment"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(LOG_TAG, "Creating fragment UI..."); // Create the view of this fragment View view = inflater.inflate(R.layout.fragment_favorite_busses, container, false); // Get the list view listView = (ListView) view.findViewById(R.id.listView_favoriteBusses); // Get info text info = (TextView) view.findViewById(R.id.textView_favoriteBusses_info); return view; } @Override public void onAttach(Activity activity) { super.onAttach(activity); // Ensure attached activity implements the interface try { if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Attaching FavoriteBussesFragment..."); listenerActivity = (FavoriteBussesListener) activity; } catch(Exception e) { throw new ClassCastException(activity.getClass().getName() + " should implement FavoriteBussesListener!"); } } @Override public void onStart() { super.onStart(); // Load favorited busses listenerActivity.onFavoriteBussesLoaded(); // Set item click listener listenerActivity.onSetFavoritedBusSelected(listView); } /** Gets the ListView of this fragment * * @return {@link AllBussesFragment#listView} */ public ListView getListView() { return listView; } /** Sets the adapter of this fragment * * @param busListAdapter New adapter */ public void setBusListAdapter(BusListAdapter busListAdapter) { // If there are favorite busses if(busListAdapter != null && busListAdapter.getCount() > 0) { if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Setting favorite bus list adapter..."); this.busListAdapter = busListAdapter; listView.setAdapter(busListAdapter); // Hide info text info.setVisibility(View.GONE); listView.setVisibility(View.VISIBLE); } else { this.busListAdapter = null; listView.setAdapter(null); // Show info text info.setVisibility(View.VISIBLE); listView.setVisibility(View.GONE); } } /** Gets the adapter of this fragment * * @return {@link AllBussesFragment#busListAdapter} */ public BusListAdapter getBusListAdapter() { return busListAdapter; } }