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