diff --git a/app/build.gradle b/app/build.gradle index de64e9d..b6331b6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,6 +26,7 @@ dependencies { }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' + compile 'com.afollestad.material-dialogs:core:0.9.4.3' compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+' compile 'devlight.io:navigationtabbar:1.2.5' testCompile 'junit:junit:4.12' diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/GameSelection.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/GameSelection.java index 02b5e52..248cc24 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/GameSelection.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/GameSelection.java @@ -1,25 +1,19 @@ package com.de.aldo_apps.aldo.mariokartcircuitselector; import android.graphics.Color; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.view.PagerAdapter; +import android.os.AsyncTask; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; +import com.afollestad.materialdialogs.MaterialDialog; +import com.de.aldo_apps.aldo.mariokartcircuitselector.adapter.PagerItemAdapter; import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Accessory; import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Character; import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Kart; import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Track; import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Wheels; -import com.de.aldo_apps.aldo.mariokartcircuitselector.fragments.PagerItem; -import com.de.aldo_apps.aldo.mariokartcircuitselector.fragments.SingleCharacterFragment; import java.util.ArrayList; @@ -29,102 +23,51 @@ public class GameSelection extends AppCompatActivity { private static final String TAG = "GameSelection"; - private PagerItem mCharacterItems; - private PagerItem mKartItems; - private PagerItem mTrackItems; - private PagerItem mAccessoryItems; - private PagerItem mWheelsItems; - private ArrayList mAllKarts = new ArrayList<>(); private ArrayList mAllCharacters = new ArrayList<>(); private ArrayList mAllTracks = new ArrayList<>(); private ArrayList mAllWheels = new ArrayList<>(); private ArrayList mAllAccessories = new ArrayList<>(); + private final ArrayList> mListOfObjects = new ArrayList<>(); + + private DatabaseHandler mDbHandler; + + /** + * Progress Bar to show during initial loading of the list. + */ + private MaterialDialog mProgressBar; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game_selection); - final DatabaseHandler handler = new DatabaseHandler(this); + mDbHandler = new DatabaseHandler(this); + showLoading(); - mAllKarts = handler.getAllKarts(null, false); - mAllCharacters = handler.getAllCharacters(null, false); - mAllTracks = handler.getAllTracks(null, false); - mAllWheels = handler.getAllWheels(null, false); - mAllAccessories = handler.getAllAccessories(null, false); + new GetFramDatabaseTask().execute(""); + } + private void showLoading() { + // Show Loading Bar until all items are loaded. + mProgressBar = new MaterialDialog.Builder(this) + .content("Lade...") + .progress(true, 0) + .show(); + } + + public void hideLoading() { + if (mProgressBar != null) { + mProgressBar.dismiss(); + } + } + + public void updateUI() { final String[] colors = getResources().getStringArray(R.array.vertical_ntb); final ViewPager viewPager = (ViewPager) findViewById(R.id.vp_horizontal_ntb); - viewPager.setAdapter(new PagerAdapter() { - @Override - public int getCount() { - return 5; - } - - @Override - public boolean isViewFromObject(final View view, final Object object) { - return view.equals(object); - } - - - @Override - public void destroyItem(final View container, final int position, final Object object) { - ((ViewPager) container).removeView((View) object); - } - - @Override - public Object instantiateItem(final ViewGroup container, final int position) { - final View view = LayoutInflater.from( - getBaseContext()).inflate(R.layout.pager_item, null, false); - - switch (position) { - case Constants.CHARACTER: - mCharacterItems = new PagerItem(view, handler, GameSelection.this, - getSupportFragmentManager()); - if (mAllCharacters != null) { - mCharacterItems.setArguments(mAllCharacters); - } - break; - case Constants.KART: - mKartItems = new PagerItem(view, handler, GameSelection.this, - getSupportFragmentManager()); - if (mAllKarts != null) { - mKartItems.setArguments(mAllKarts); - } - break; - case Constants.ACCESSORY: - mAccessoryItems = new PagerItem(view, handler, GameSelection.this, - getSupportFragmentManager()); - if (mAllAccessories != null) { - mAccessoryItems.setArguments(mAllAccessories); - } - break; - case Constants.TRACK: - mTrackItems = new PagerItem(view, handler, GameSelection.this, - getSupportFragmentManager()); - if (mAllTracks != null) { - mTrackItems.setArguments(mAllTracks); - } - break; - case Constants.WHEELS: - mWheelsItems = new PagerItem(view, handler, GameSelection.this, - getSupportFragmentManager()); - if (mAllWheels != null) { - mWheelsItems.setArguments(mAllWheels); - } - break; - default: - Log.d(TAG, "instantiateItem: No available Item for Position [" - + position + "]"); - break; - } - - container.addView(view); - return view; - } - }); + viewPager.setAdapter(new PagerItemAdapter(getLayoutInflater(), mDbHandler, + this, getSupportFragmentManager(), mListOfObjects)); final NavigationTabBar navigationTabBar @@ -171,7 +114,7 @@ public class GameSelection extends AppCompatActivity { .build() ); navigationTabBar.setModels(models); - navigationTabBar.setViewPager(viewPager, 2); + navigationTabBar.setViewPager(viewPager); navigationTabBar.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override @@ -209,6 +152,33 @@ public class GameSelection extends AppCompatActivity { } } }, 500); + } + + private class GetFramDatabaseTask extends AsyncTask { + + @Override + protected String doInBackground(String... strings) { + mAllKarts = mDbHandler.getAllKarts(null, false); + mAllCharacters = mDbHandler.getAllCharacters(null, false); + mAllTracks = mDbHandler.getAllTracks(null, false); + mAllWheels = mDbHandler.getAllWheels(null, false); + mAllAccessories = mDbHandler.getAllAccessories(null, false); + + return null; + } + + @Override + protected void onPostExecute(String result) { + mListOfObjects.add(mAllKarts); + mListOfObjects.add(mAllCharacters); + mListOfObjects.add(mAllTracks); + mListOfObjects.add(mAllWheels); + mListOfObjects.add(mAllAccessories); + + + updateUI(); + hideLoading(); + } } } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/PagerItem.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/PagerItem.java index a593542..b6d0388 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/PagerItem.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/PagerItem.java @@ -41,15 +41,15 @@ public class PagerItem { private FragmentManager mFragmentManager; - public PagerItem(final View view, + public PagerItem(final LayoutInflater inflater, final DatabaseHandler databaseHandler, final Activity context, final FragmentManager fragmentManager) { - mView = view; + mView = inflater.inflate(R.layout.pager_item, null, false); mHandler = databaseHandler; mContext = context; mFragmentManager = fragmentManager; - mListView = (ListView) view.findViewById(R.id.all_items_list_view); + mListView = (ListView) mView.findViewById(R.id.all_items_list_view); } /**