From a25a12b8c7ca421077d6f26609a1777f158b2e6e Mon Sep 17 00:00:00 2001 From: Alexander Doerflinger Date: Thu, 10 Aug 2017 16:54:55 +0200 Subject: [PATCH] [INTERMEDIATE STATE] Pager implementation started Seems not to work at all. We need to have a further look into this. At least it is somehow not crashing anymore... --- .idea/misc.xml | 2 +- app/build.gradle | 4 +- .../mariokartcircuitselector/Constants.java | 26 +++ .../DatabaseHandler.java | 51 +++-- .../GameSelection.java | 203 ++++++++++++++++-- .../adapter/CharacterListAdapter.java | 59 +++++ .../fragments/PagerItem.java | 99 +++++++++ .../fragments/SingleAccessoryFragment.java | 13 +- .../fragments/SingleCharacterFragment.java | 73 ++++--- .../fragments/SingleKartFragment.java | 27 ++- .../fragments/SingleTrackFragment.java | 27 ++- .../fragments/SingleWheelsFragment.java | 17 +- .../main/res/drawable/accessory_24_white.png | Bin 0 -> 476 bytes .../res/drawable/accessory_50_dark_grey.png | Bin 0 -> 1156 bytes .../main/res/drawable/character_24_white.png | Bin 0 -> 324 bytes .../res/drawable/character_50_dark_grey.png | Bin 0 -> 846 bytes app/src/main/res/drawable/kart_24_white.png | Bin 0 -> 317 bytes .../main/res/drawable/kart_50_dark_grey.png | Bin 0 -> 607 bytes app/src/main/res/drawable/track_24_white.png | Bin 0 -> 277 bytes .../main/res/drawable/track_50_dark_grey.png | Bin 0 -> 565 bytes app/src/main/res/drawable/wheels_24_white.png | Bin 0 -> 536 bytes .../main/res/drawable/wheels_50_dark_grey.png | Bin 0 -> 1502 bytes .../res/layout/activity_game_selection.xml | 31 ++- app/src/main/res/layout/pager_item.xml | 12 ++ app/src/main/res/values/arrays.xml | 15 ++ app/src/main/res/values/strings.xml | 7 + 26 files changed, 566 insertions(+), 100 deletions(-) create mode 100644 app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/adapter/CharacterListAdapter.java create mode 100644 app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/PagerItem.java create mode 100644 app/src/main/res/drawable/accessory_24_white.png create mode 100644 app/src/main/res/drawable/accessory_50_dark_grey.png create mode 100644 app/src/main/res/drawable/character_24_white.png create mode 100644 app/src/main/res/drawable/character_50_dark_grey.png create mode 100644 app/src/main/res/drawable/kart_24_white.png create mode 100644 app/src/main/res/drawable/kart_50_dark_grey.png create mode 100644 app/src/main/res/drawable/track_24_white.png create mode 100644 app/src/main/res/drawable/track_50_dark_grey.png create mode 100644 app/src/main/res/drawable/wheels_24_white.png create mode 100644 app/src/main/res/drawable/wheels_50_dark_grey.png create mode 100644 app/src/main/res/layout/pager_item.xml create mode 100644 app/src/main/res/values/arrays.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 738edfe..406ac20 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -56,7 +56,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index b7afc16..de64e9d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,8 +24,10 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.+' + compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+' + compile 'devlight.io:navigationtabbar:1.2.5' testCompile 'junit:junit:4.12' + compile 'com.android.support:design:25.3.1' } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/Constants.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/Constants.java index 4ef2dfb..b78a0f4 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/Constants.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/Constants.java @@ -243,4 +243,30 @@ public class Constants { KEY_GAME, KEY_AVAILABLE }; + + + /** + * Enum Value defining the position of the Character Tab. + */ + static final int CHARACTER = 0; + + /** + * Enum Value defining the position of the Kart Tab. + */ + static final int KART = 1; + + /** + * Enum Value defining the position of the Track Tab. + */ + static final int TRACK = 2; + + /** + * Enum Value defining the position of the Accessory Tab. + */ + static final int ACCESSORY = 3; + + /** + * Enum Value defining the position of the Wheels Tab. + */ + static final int WHEELS = 4; } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/DatabaseHandler.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/DatabaseHandler.java index ca31f6e..4e9d368 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/DatabaseHandler.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/DatabaseHandler.java @@ -222,11 +222,10 @@ public class DatabaseHandler extends SQLiteAssetHelper { final Cursor cursor = database.query(Constants.TABLE_TRACK, Constants.PROJECTION_TRACK, selectionClause, selectionArgs, null, null, null, null); - if (cursor != null) { + if (cursor != null && cursor.moveToFirst()) { Log.d(TAG, "getAllTracks: Moving cursor to first."); - cursor.moveToFirst(); } else { - Log.d(TAG, "getAllTracks: cursor is null"); + Log.d(TAG, "getAllTracks: cursor is null or cannot be moved to first."); return null; } @@ -277,7 +276,7 @@ public class DatabaseHandler extends SQLiteAssetHelper { isValid = false; } - if (availableIdx < 0) { + if (availableIdx >= 0) { track.setAvailable(cursor.getInt(availableIdx)); } else { Log.d(TAG, "getAllTracks: No such column [" + Constants.KEY_AVAILABLE + "]"); @@ -330,11 +329,10 @@ public class DatabaseHandler extends SQLiteAssetHelper { final Cursor cursor = database.query(Constants.TABLE_KART, Constants.PROJECTION_KART, selectionClause, selectionArgs, null, null, null, null); - if (cursor != null) { + if (cursor != null && cursor.moveToFirst()) { Log.d(TAG, "getAllKarts: Moving cursor to first."); - cursor.moveToFirst(); } else { - Log.d(TAG, "getAllKarts: cursor is null"); + Log.d(TAG, "getAllKarts: cursor is null or cannot be moved to first."); return null; } @@ -401,7 +399,7 @@ public class DatabaseHandler extends SQLiteAssetHelper { isValid = false; } - if (availableIdx < 0) { + if (availableIdx >= 0) { kart.setAvailable(cursor.getInt(availableIdx)); } else { Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_AVAILABLE + "]"); @@ -456,6 +454,13 @@ public class DatabaseHandler extends SQLiteAssetHelper { Constants.PROJECTION_CHARACTER, selectionClause, selectionArgs, null, null, null, null); + if (cursor != null && cursor.moveToFirst()) { + Log.d(TAG, "getAllCharacters: Moving cursor to first."); + } else { + Log.d(TAG, "getAllCharacters: cursor is null or cannot be moved to first."); + return null; + } + final ArrayList allAvailableCharacters = new ArrayList<>(); do { @@ -496,7 +501,7 @@ public class DatabaseHandler extends SQLiteAssetHelper { isValid = false; } - if (availableIdx < 0) { + if (availableIdx >= 0) { character.setAvailable(cursor.getInt(availableIdx)); } else { Log.d(TAG, "getAllCharacters: No such column [" + Constants.KEY_AVAILABLE + "]"); @@ -550,7 +555,12 @@ public class DatabaseHandler extends SQLiteAssetHelper { final Cursor cursor = database.query(Constants.TABLE_RULESET, Constants.PROJECTION_RULESET, selectionClause, selectionArgs, null, null, null, null); - + if (cursor != null && cursor.moveToFirst()) { + Log.d(TAG, "getAllRulesets: Moving cursor to first."); + } else { + Log.d(TAG, "getAllRulesets: cursor is null or cannot be moved to first."); + return null; + } final ArrayList allAvailableRulesets = new ArrayList<>(); do { final int idIdx = cursor.getColumnIndex(Constants.KEY_ID); @@ -678,6 +688,13 @@ public class DatabaseHandler extends SQLiteAssetHelper { final Cursor cursor = database.query(Constants.TABLE_ACCESSORY, Constants.PROJECTION_ACCESSORY, selectionClause, selectionArgs, null, null, null, null); + if (cursor != null && cursor.moveToFirst()) { + Log.d(TAG, "getAllAccessories: Moving cursor to first."); + } else { + Log.d(TAG, "getAllAccessories: cursor is null or cannot be moved to first."); + return null; + } + final ArrayList allAvailableAccessories = new ArrayList<>(); @@ -710,7 +727,7 @@ public class DatabaseHandler extends SQLiteAssetHelper { isValid = false; } - if (availableIdx < 0) { + if (availableIdx >= 0) { accessory.setAvailable(cursor.getInt(availableIdx)); } else { Log.d(TAG, "getAllAccessories: No such column [" + Constants.KEY_AVAILABLE + "]"); @@ -764,11 +781,10 @@ public class DatabaseHandler extends SQLiteAssetHelper { final Cursor cursor = database.query(Constants.TABLE_WHEELS, Constants.PROJECTION_WHEELS, selectionClause, selectionArgs, null, null, null, null); - if (cursor != null) { + if (cursor != null && cursor.moveToFirst()) { Log.d(TAG, "getAllWheels: Moving cursor to first."); - cursor.moveToFirst(); } else { - Log.d(TAG, "getAllWheels: cursor is null"); + Log.d(TAG, "getAllWheels: cursor is null or cannot be moved to first."); return null; } @@ -803,7 +819,7 @@ public class DatabaseHandler extends SQLiteAssetHelper { isValid = false; } - if (availableIdx < 0) { + if (availableIdx >= 0) { wheels.setAvailable(cursor.getInt(availableIdx)); } else { Log.d(TAG, "getAllWheels: No such column [" + Constants.KEY_AVAILABLE + "]"); @@ -835,11 +851,10 @@ public class DatabaseHandler extends SQLiteAssetHelper { final Cursor cursor = database.query(Constants.TABLE_GAME, Constants.PROJECTION_GAME, null, null, null, null, null, null); - if (cursor != null) { + if (cursor != null && cursor.moveToFirst()) { Log.d(TAG, "getAllGames: Moving cursor to first."); - cursor.moveToFirst(); } else { - Log.d(TAG, "getAllGames: cursor is null"); + Log.d(TAG, "getAllGames: cursor is null or cannot be moved to first."); return null; } 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 9141d9c..02b5e52 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,16 +1,46 @@ 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.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.widget.Button; -import android.widget.EditText; -import android.widget.TextView; +import android.view.ViewGroup; +import android.widget.LinearLayout; +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; + +import devlight.io.library.ntb.NavigationTabBar; 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<>(); + @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -18,24 +48,167 @@ public class GameSelection extends AppCompatActivity { final DatabaseHandler handler = new DatabaseHandler(this); - final EditText editText = (EditText) findViewById(R.id.id_input); + 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); - final Button button = (Button) findViewById(R.id.ok_button); + final String[] colors = getResources().getStringArray(R.array.vertical_ntb); - final TextView result = (TextView) findViewById(R.id.result_field); - - button.setOnClickListener(new View.OnClickListener() { + final ViewPager viewPager = (ViewPager) findViewById(R.id.vp_horizontal_ntb); + viewPager.setAdapter(new PagerAdapter() { @Override - public void onClick(final View view) { - final int id = Integer.parseInt(editText.getText().toString()); - final Track track = handler.testDBConnection(id); - if (track != null) { - final String resultStr = track.getGame() + " - " + track.getName() - + " - Available = " + track.getAvailable(); - result.setText(resultStr); + 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; } }); + + final NavigationTabBar navigationTabBar + = (NavigationTabBar) findViewById(R.id.ntb_vertical); + final ArrayList models = new ArrayList<>(); + models.add( + new NavigationTabBar.Model.Builder( + getResources().getDrawable(R.drawable.character_50_dark_grey), + Color.parseColor(colors[0]) + ).title(getString(R.string.title_character)) + .badgeTitle("NTB") + .build() + ); + models.add( + new NavigationTabBar.Model.Builder( + getResources().getDrawable(R.drawable.kart_50_dark_grey), + Color.parseColor(colors[1]) + ).title(getString(R.string.title_kart)) + .badgeTitle("with") + .build() + ); + models.add( + new NavigationTabBar.Model.Builder( + getResources().getDrawable(R.drawable.track_50_dark_grey), + Color.parseColor(colors[2]) + ).title(getString(R.string.title_track)) + .badgeTitle("state") + .build() + ); + models.add( + new NavigationTabBar.Model.Builder( + getResources().getDrawable(R.drawable.accessory_50_dark_grey), + Color.parseColor(colors[3]) + ).title(getString(R.string.title_accessory)) + .badgeTitle("icon") + .build() + ); + models.add( + new NavigationTabBar.Model.Builder( + getResources().getDrawable(R.drawable.wheels_50_dark_grey), + Color.parseColor(colors[4]) + ).title(getString(R.string.title_wheels)) + .badgeTitle("777") + .build() + ); + navigationTabBar.setModels(models); + navigationTabBar.setViewPager(viewPager, 2); + + navigationTabBar.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(final int position, + final float positionOffset, + final int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(final int position) { + Log.d(TAG, "onPageSelected: Selected Tab on Position [" + position + + "] with Title [" + navigationTabBar.getModels().get(position).getTitle() + + "]"); + navigationTabBar.getModels().get(position).hideBadge(); + } + + @Override + public void onPageScrollStateChanged(final int state) { + + } + }); + + navigationTabBar.postDelayed(new Runnable() { + @Override + public void run() { + for (int i = 0; i < navigationTabBar.getModels().size(); i++) { + final NavigationTabBar.Model model = navigationTabBar.getModels().get(i); + navigationTabBar.postDelayed(new Runnable() { + @Override + public void run() { + model.showBadge(); + } + }, i * 100); + } + } + }, 500); + } } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/adapter/CharacterListAdapter.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/adapter/CharacterListAdapter.java new file mode 100644 index 0000000..55ed404 --- /dev/null +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/adapter/CharacterListAdapter.java @@ -0,0 +1,59 @@ +package com.de.aldo_apps.aldo.mariokartcircuitselector.adapter; + +import android.content.Context; +import android.provider.ContactsContract; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ListAdapter; + +import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler; +import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Character; +import com.de.aldo_apps.aldo.mariokartcircuitselector.fragments.SingleCharacterFragment; + +import java.util.ArrayList; + +/** + * Created by aldo7224 on 10.08.17. + */ + +public class CharacterListAdapter extends ArrayAdapter { + + private ArrayList mList; + + private Context mContext; + + private DatabaseHandler mHandler; + + public CharacterListAdapter(final Context context, final ArrayList characters) { + super(context, 0, characters); + mContext = context; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + SingleCharacterFragment scf = new SingleCharacterFragment(); + final View view = scf.creatView(LayoutInflater.from(mContext)); + scf.initViews(view); + scf.setArguments(mList.get(position), mHandler); + return view; + } + + @Override + public int getCount() { + return mList.size(); + } + + public void setListOfItems(final ArrayList characters) { + mList = characters; + } + + public void setDatabaseHandler(final DatabaseHandler handler) { + mHandler = handler; + } + +} 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 new file mode 100644 index 0000000..a593542 --- /dev/null +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/PagerItem.java @@ -0,0 +1,99 @@ +package com.de.aldo_apps.aldo.mariokartcircuitselector.fragments; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.ListView; + +import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler; +import com.de.aldo_apps.aldo.mariokartcircuitselector.R; +import com.de.aldo_apps.aldo.mariokartcircuitselector.adapter.CharacterListAdapter; +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 java.util.ArrayList; + +/** + * Created by aldo7224 on 10.08.17. + */ + +public class PagerItem { + + private static final String TAG = "PagerItem"; + + private View mView; + + private ListView mListView; + + private DatabaseHandler mHandler; + + private Activity mContext; + + private FragmentManager mFragmentManager; + + public PagerItem(final View view, + final DatabaseHandler databaseHandler, + final Activity context, + final FragmentManager fragmentManager) { + mView = view; + mHandler = databaseHandler; + mContext = context; + mFragmentManager = fragmentManager; + mListView = (ListView) view.findViewById(R.id.all_items_list_view); + } + + /** + * Helper method which sets the real texts/arguments to the view objects. + * + * @param objects The List of objects of which we will retrieve our texts/arguments. + */ + public void setArguments(final ArrayList objects) { + if (objects.size() > 0) { + final Object bufferTestObject = objects.get(0); + if (bufferTestObject instanceof Character) { + handleCharacterObject((ArrayList) objects); + } else if (bufferTestObject instanceof Kart) { + handleKartObject((ArrayList) objects); + } else if (bufferTestObject instanceof Track) { + handleTrackObject((ArrayList) objects); + } else if (bufferTestObject instanceof Accessory) { + handleAccessoryObject((ArrayList) objects); + } else if (bufferTestObject instanceof Wheels) { + handleWheelsObject((ArrayList) objects); + } + } + } + + private void handleCharacterObject(final ArrayList characters) { + final CharacterListAdapter adapter = new CharacterListAdapter(mContext, characters); + adapter.setListOfItems(characters); + adapter.setDatabaseHandler(mHandler); + mListView.setAdapter(adapter); + } + + private void handleKartObject(final ArrayList karts) { + + } + + private void handleTrackObject(final ArrayList characters) { + + } + + private void handleAccessoryObject(final ArrayList accessories) { + + } + + private void handleWheelsObject(final ArrayList wheels) { + + } +} diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleAccessoryFragment.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleAccessoryFragment.java index a3189c6..9b52bc5 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleAccessoryFragment.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleAccessoryFragment.java @@ -107,6 +107,11 @@ public class SingleAccessoryFragment extends Fragment { // Initialize all single views and make them visible. mAccessoryName = (TextView) view.findViewById(R.id.single_info_name); mAccessoryName.setVisibility(View.VISIBLE); + + if (mAccessory != null) { + mAccessoryAvailable.setChecked(mAccessory.getAvailable()); + mAccessoryName.setText(mAccessory.getName()); + } } /** @@ -118,7 +123,11 @@ public class SingleAccessoryFragment extends Fragment { public void setArguments(final Accessory accessory, final DatabaseHandler handler) { mAccessory = accessory; mHandler = handler; - mAccessoryAvailable.setChecked(accessory.getAvailable()); - mAccessoryName.setText(accessory.getName()); + if (mAccessoryAvailable != null) { + mAccessoryAvailable.setChecked(accessory.getAvailable()); + } + if (mAccessoryName != null) { + mAccessoryName.setText(accessory.getName()); + } } } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleCharacterFragment.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleCharacterFragment.java index 91a3213..82daf04 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleCharacterFragment.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleCharacterFragment.java @@ -8,6 +8,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.LinearLayout; import android.widget.TextView; import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler; @@ -23,7 +24,7 @@ import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Character; * @version 0.1 * @since 10.08.2017 */ -public class SingleCharacterFragment extends Fragment { +public class SingleCharacterFragment { /** * The Tag for Debugging Output. @@ -55,32 +56,16 @@ public class SingleCharacterFragment extends Fragment { */ private DatabaseHandler mHandler; - @Override - public View onCreateView(final LayoutInflater inflater, - final ViewGroup container, - final Bundle savedInstanceState) { + /** + * The View-Instance of this View. + */ + private View mView; + + public View creatView(final LayoutInflater inflater) { // Inflate the GenericListItem and return it. All Operations on the View will be handled // in own functions. - return inflater.inflate(R.layout.generic_list_item, container, false); - } - - - @Override - public void onViewCreated(final View view, final Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - // Initialize the Views and member variables. - // Make all the Visible/Invisible/Gone Actions here as we know which information will be - // shown here. - initViews(view); - view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(final View view) { - if (mCharacterAvailable != null) { - mCharacterAvailable.toggle(); - } - } - }); + Log.d(TAG, "onCreateView: Creating View"); + return inflater.inflate(R.layout.generic_list_item, null, false); } /** @@ -89,8 +74,17 @@ public class SingleCharacterFragment extends Fragment { * * @param view The Parent View. */ - private void initViews(final View view) { + public void initViews(final View view) { mCharacterAvailable = (CheckBox) view.findViewById(R.id.availability_checkbox); + + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View view) { + if (mCharacterAvailable != null) { + mCharacterAvailable.toggle(); + } + } + }); // Assign a CheckedChange Listener to the Checkbox, so we can update the status in the // database as well. mCharacterAvailable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @@ -121,6 +115,12 @@ public class SingleCharacterFragment extends Fragment { // Mark the single name view (without additional information) as GONE final View singleName = view.findViewById(R.id.single_info_name); singleName.setVisibility(View.GONE); + + if (mCharacter != null) { + mCharacterAvailable.setChecked(mCharacter.getAvailable()); + mCharacterName.setText(mCharacter.getName()); + mCharacterWeight.setText(mCharacter.getWeight()); + } } /** @@ -132,9 +132,24 @@ public class SingleCharacterFragment extends Fragment { public void setArguments(final Character character, final DatabaseHandler handler) { mCharacter = character; mHandler = handler; - mCharacterAvailable.setChecked(character.getAvailable()); - mCharacterName.setText(character.getName()); - mCharacterWeight.setText(character.getWeight()); + if (mCharacterAvailable != null) { + mCharacterAvailable.setChecked(character.getAvailable()); + } + if (mCharacterName != null) { + mCharacterName.setText(character.getName()); + } + if (mCharacterWeight != null) { + mCharacterWeight.setText(character.getWeight()); + } + } + + /** + * Returns the View Instance of this View. + * + * @return the View Instance of this View. + */ + public View getView() { + return mView; } } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleKartFragment.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleKartFragment.java index 47045cf..f1fe4da 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleKartFragment.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleKartFragment.java @@ -126,21 +126,36 @@ public class SingleKartFragment extends Fragment { // Mark the single name view (without additional information) as GONE final View singleName = view.findViewById(R.id.single_info_name); singleName.setVisibility(View.GONE); + + if (mKart != null) { + mKartAvailable.setChecked(mKart.getAvailable()); + mKartName.setText(mKart.getName()); + mKartWeight.setText(mKart.getWeight()); + mKartDedicatedDriver.setText(mKart.getDedicatedDriver()); + } } /** * Helper method which sets the real texts/arguments to the view objects. * - * @param kart The Kart object of which we will retrieve our texts/arguments. - * @param handler The Database handler which handles the database operations. + * @param kart The Kart object of which we will retrieve our texts/arguments. + * @param handler The Database handler which handles the database operations. */ public void setArguments(final Kart kart, final DatabaseHandler handler) { mKart = kart; mHandler = handler; - mKartAvailable.setChecked(kart.getAvailable()); - mKartName.setText(kart.getName()); - mKartWeight.setText(kart.getWeight()); - mKartDedicatedDriver.setText(kart.getDedicatedDriver()); + if (mKartAvailable != null) { + mKartAvailable.setChecked(kart.getAvailable()); + } + if (mKartName != null) { + mKartName.setText(kart.getName()); + } + if (mKartWeight != null) { + mKartWeight.setText(kart.getWeight()); + } + if (mKartDedicatedDriver != null) { + mKartDedicatedDriver.setText(kart.getDedicatedDriver()); + } } } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleTrackFragment.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleTrackFragment.java index d0fadd7..68af948 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleTrackFragment.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleTrackFragment.java @@ -126,20 +126,35 @@ public class SingleTrackFragment extends Fragment { // Mark the single name view (without additional information) as GONE final View singleName = view.findViewById(R.id.single_info_name); singleName.setVisibility(View.GONE); + + if (mTrack != null) { + mTrackAvailable.setChecked(mTrack.getAvailable()); + mTrackName.setText(mTrack.getName()); + mTrackPackage.setText(mTrack.getPackage()); + mTrackNumber.setText(mTrack.getNumber()); + } } /** * Helper method which sets the real texts/arguments to the view objects. * - * @param track The Track object of which we will retrieve our texts/arguments. - * @param handler The Database handler which handles the database operations. + * @param track The Track object of which we will retrieve our texts/arguments. + * @param handler The Database handler which handles the database operations. */ public void setArguments(final Track track, final DatabaseHandler handler) { mTrack = track; mHandler = handler; - mTrackAvailable.setChecked(track.getAvailable()); - mTrackName.setText(track.getName()); - mTrackPackage.setText(track.getPackage()); - mTrackNumber.setText(track.getNumber()); + if (mTrackAvailable != null) { + mTrackAvailable.setChecked(track.getAvailable()); + } + if (mTrackName != null) { + mTrackName.setText(track.getName()); + } + if (mTrackPackage != null) { + mTrackPackage.setText(track.getPackage()); + } + if (mTrackNumber != null) { + mTrackNumber.setText(track.getNumber()); + } } } diff --git a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleWheelsFragment.java b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleWheelsFragment.java index db69a2d..6cbcba2 100644 --- a/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleWheelsFragment.java +++ b/app/src/main/java/com/de/aldo_apps/aldo/mariokartcircuitselector/fragments/SingleWheelsFragment.java @@ -107,19 +107,28 @@ public class SingleWheelsFragment extends Fragment { // Initialize all single views and make them visible. mWheelsName = (TextView) view.findViewById(R.id.single_info_name); mWheelsName.setVisibility(View.VISIBLE); + + if (mWheels != null) { + mWheelsAvailable.setChecked(mWheels.getAvailable()); + mWheelsName.setText(mWheels.getName()); + } } /** * Helper method which sets the real texts/arguments to the view objects. * - * @param wheels The Wheels object of which we will retrieve our texts/arguments. - * @param handler The Database handler which handles the database operations. + * @param wheels The Wheels object of which we will retrieve our texts/arguments. + * @param handler The Database handler which handles the database operations. */ public void setArguments(final Wheels wheels, final DatabaseHandler handler) { mWheels = wheels; mHandler = handler; - mWheelsAvailable.setChecked(wheels.getAvailable()); - mWheelsName.setText(wheels.getName()); + if (mWheelsAvailable != null) { + mWheelsAvailable.setChecked(wheels.getAvailable()); + } + if (mWheelsName != null) { + mWheelsName.setText(wheels.getName()); + } } } diff --git a/app/src/main/res/drawable/accessory_24_white.png b/app/src/main/res/drawable/accessory_24_white.png new file mode 100644 index 0000000000000000000000000000000000000000..d078105667de345a3ed0a5a6855608ecb6621f37 GIT binary patch literal 476 zcmV<20VDp2P)1&{MezoLONG5E1FL8CG;CL4R<|e|S@9wklNT`jy)?aCM+&(eA8YoHUc*tXR<+(!d1f z>3svK+hrJb1-D>5rz^nu zw6Y!V74axZ4SeAK1;!p_o4S2^C0;Gp(pS=zPf@dxAXku_<;7N5+m93c#rgurVQumi SY@g5o0000{Xyi(d496A?{_=$)CrL}V)>I}y2h5i<9U993+|Nfql7qt6{aWzt^tq>Gk2Dkx*#(z4F5d} zLqtP)FTi~sskKyve!iG0iPOkC!HRK3?W2}7$5+pr zfM0ADAVVK^ewa&HN)5?4GG!mZtJAgAaPTPvEyx?}cN@cF0gTqn`}?nFFTqyE@xPlE3NgQ~%$)|3xqQWBLaz WDk~DB*$5T@0000Y#P-@nmof&j1(E3;*i z-m@&%VxL~p19!k1pI0aKS>OVzOnY`Z(W)Ha5;&Ru?}4jMZ|0!^%1^<)VcITqku$B@ zSqW2^cfgoZBr>CFwqIgcr7}KiLq9>9WbtftJniKo{KK5Wjw! literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/character_50_dark_grey.png b/app/src/main/res/drawable/character_50_dark_grey.png new file mode 100644 index 0000000000000000000000000000000000000000..689accbf20e316fdf75fc34e31cc11b72ddcf196 GIT binary patch literal 846 zcmV-U1F`&xP)WC~yvD17w-uo98! zv*k_#$vJ@2t;z>RIFXz`TmC@+sQW5z7@~f*9(O@<9#QB3U@0QvpA``Sumo_37-C$W z;MRQ0?Ex&i-UYC-N>Ymz_Uv03EneE&%|$grepF zz%Ex19E$;TF}RUg(s75FE|@YEV|z1rDLSuJCA1eJy&`G zdtO>!zsg~f3%%w?we~IkbVEc$Dgf{Iw8H}BPXOLWQ3ZOOJ8y^1ym4)ZBvskz+xZ>f z6|dJZ<_(=+06PGUh|Jto`S(Sn^1lOUbT(-%4H20=Pvd~dwiPN}-}`LX>Vw zR^WSu)HHGuRVN?FuyoT?P~p$NL#$e1%b$OV^fIj89%` zXWnmlK@z1y`VPQLeb8I+h#@)yTXq8g_);D)yYj4=A`dh~H02eMnR@msxdGU2bnY$p zWIIm?uZ{b6$SizUM5Zp^Us4^es_WBGeoA#7$s7$-ZDnWa6UjIKOe9x7yE6FZ8s7C5 z8rmsuW|iUDN@c46@`XrbJ30(K8ndcEZ_I1*WJ7I-=Rg=e`$<~aR*T(xfxh>! z#4K>nb?}?c6Y7NH)#}?jf6v9HbIvl{#09Qz_l~(~sF7YR;~e$o;K%=EjzEtKE}s z)HFN(AAq(pF97Z@0-r#5k#hrXn>QEP0aMAHHlF~$bk%m-MR>w!^17vRIhptatdKrlk?rNF|eH`RIIP{?&^k~9;^0zfB+ z?o)4xj_*fc(*dvN6WH7>9RH^WOdl zdDdv8)yIb5a5x+ehr{6rAp`(R09%raNr_3eB-=4;0a%hek~{)fj$t#0e5b_qjdo5V zNUq26E(0R+6de$es>H^Ri-;h(E_EUiaU|J_$m|YoUWbTCbRy@wM8t;V;m5^9hjP9F zu(z4ifZSIM$%S^PW8cXk*H-&te@n%XYyoTm{4K4)R79_UDGQfY-PweECqj zNmju=(D@TZq^;DRO-!G5sm+8A4(0~1JncdNUXp_PnznQHVmn-qeWh}^bvW1Rd-JU} zbog`^QaHa&0Bpw=Vz{fJ+$aB2Aw#;?y*gY8_vvplycQvxpS3+vsWd9PF-4Sc$0h}! z=_~g4E@LGBO;G5$+>02A+O8GWV2qBg-R~22Ez4bXacl8kURSQX6%Mz)Mfxy0cie8x tvbNK!N3002ovPDHLkV1hWN4$S}n literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/track_24_white.png b/app/src/main/res/drawable/track_24_white.png new file mode 100644 index 0000000000000000000000000000000000000000..20141e1e44c99a8579a4cef504d6a6f1d5024243 GIT binary patch literal 277 zcmV+w0qXvVP)ZbD+m>ooK>|Z0tLKW*pWb1WO=hb!Ply7(Zl7*RP^* z9LI4S$C-eLDrUX_=m2!gd?BK8>vpXI5tRV$%={B40QY}k1ZHl=osUuz{v)D8m?1=T z*g9W~)aXaEpo{+NEagiYpr0^6AO2(JhoyWmzI1^eK%bbRtLKYBL}hH{C_O9&L6w;B zG(r2Vdf(%zTt6TYY7i!&6P#iFHMrt1hNh z;6vvJBV^WLQw0E=W^_I@{Is+lvnntieE>His)(opaFd(`CK-=15mn*a^T6fh`-V-` zAz^?a*hw0|tO_Ki`8BuzGhfHD3iV_b?^6$nfP!<^t3m2Xo80@`PcW>p{tK%E%`W2>RwJU~B|b2#EmcUN_F zPft;7JU|7UfDU*tKM$>)fNCqoR^S#Gfd)7LrR|qmYh=@Y3?#=9xOmVF`%<m%Y47@wKa4_diBs}xMq-ub=5Q~r_S>X=Gre5i|$hx-7?c0ljNl3pp{&!09z8JOrk!3Oolt~+>$6S za&(6m`Sf9tTOj2{&f9ckZqu{=C%(7oU~6Y%Jk27kO_vVZRcQySwSyMtV+=Bu^+1ep zJ{uKJ19<9fOb)Cz^Qg$u+ZuMs0Qz8OfJY-ZDdHeY<2oez#qzjrGh!jl^2NjYg_9(~ zz~bNSMXQfxa{iI#vb}fP_LXT)74y)$0$RMKJh1tM)F8He;$d7Dpml1Ynwy4y_`kyg*MyAYGlYkn074b;4WM z*itR;b*b$9kc7+Cy%_o5fJfsB^wJ&ReHXhC9< z2dGb|XvE(d9*v|PY9hvo_F7)~z0ACJ`;LKrUDBJ?JsTlFXZcbcSjeM2S^3`rC0FvO zLs8+YB<&iuC6X%w;3U6!Hm#K- zg;P1yCcFvpRssrb1w*d9VteiB5xm)Gp_{?GNiIUIsMRyCUTMqM0u4X(?*WoM_g*Sl z$}Egwr%GnZj6HKu&z}GSEQ3JIs@GoyVqw!4TGBOlS9iFz<3|fEpwv=m9Y=)Lxd_A# z8ky|YtYM){`YaHf4Bsr7qhyzK1Y}q2G0EO}c?A6~0f?vHtgUcDYHa|o(lbW#m#Tn% zt%mucozU-4LEP*AYe~J30H0zpjDWBuij1oJlY-dWqM*C`yr9-Oh{*ep!Xol6j{+IC zD840%STF;K3I`U#3CCxt5k#PnxTE%R;mWJwgd?LY(E(s(55fz~P#f=*`ef!UoYmLH z+a(PZ&Dx!jZT!`vFI}vR)fT1@=R<}h+<>}UuRvm+;aMf=)>M5Dcb?bFIH$R zZx!&$h24;W;hKs{M?xYB)%!`*lU?L7L%u}baQapygqy%CXD4h=I(%>qxTAJD7( z7|YJ0iYz&GJPL^+|pa_`Wd~h&(&S#K&~v!Lkhi0JP(&iw0}&{D0Ld=;v=G1huMpT87nyPD7EFKYROx%#U8 zuK;4^6;kjM%ynhv)qepHEn_UbTs09mRl3nV%PE!r2Nx`1m5+LW+yDRo07*qoM6N<$ Ef`$FX@c;k- literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_game_selection.xml b/app/src/main/res/layout/activity_game_selection.xml index 547d5ec..ab426c1 100644 --- a/app/src/main/res/layout/activity_game_selection.xml +++ b/app/src/main/res/layout/activity_game_selection.xml @@ -7,24 +7,19 @@ android:orientation="vertical" tools:context="com.de.aldo_apps.aldo.mariokartcircuitselector.GameSelection"> - + + - -