Fully Functional Database loading
Adapter needs to be replaced with custom adapter. Click needs to be implemented as well.
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -56,7 +56,7 @@
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
||||
@@ -16,6 +16,32 @@
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<provider android:name=".CharacterContentProvider"
|
||||
android:authorities="com.de.aldo_apps.aldo.mariokartcircuitselector"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
/>
|
||||
<provider android:name=".WheelsContentProvider"
|
||||
android:authorities="com.de.aldo_apps.aldo.mariokartcircuitselector"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
/>
|
||||
<provider android:name=".TrackContentProvider"
|
||||
android:authorities="com.de.aldo_apps.aldo.mariokartcircuitselector"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
/>
|
||||
<provider android:name=".KartContentProvider"
|
||||
android:authorities="com.de.aldo_apps.aldo.mariokartcircuitselector"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
/>
|
||||
<provider android:name=".AccessoryContentProvider"
|
||||
android:authorities="com.de.aldo_apps.aldo.mariokartcircuitselector"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
/>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,112 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentValues;
|
||||
import android.content.UriMatcher;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.Constants;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
|
||||
/**
|
||||
* Created by aldo7224 on 16.08.17.
|
||||
*/
|
||||
|
||||
public class AccessoryContentProvider extends ContentProvider {
|
||||
|
||||
private static final String TAG = "AccessoryProvider";
|
||||
public static final String PROVIDER_NAME
|
||||
= "com.de.aldo_apps.aldo.mariokartcircuitselector";
|
||||
|
||||
/**
|
||||
* A uri to do operations on cust_master table. A content provider is identified by its uri
|
||||
*/
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/accessories");
|
||||
|
||||
private static final UriMatcher uriMatcher;
|
||||
|
||||
static {
|
||||
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "characters", Constants.CHARACTER_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "tracks", Constants.TRACK_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "karts", Constants.KART_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "wheels", Constants.WHEELS_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "accessories", Constants.ACCESSORY_LOADER_ID);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This content provider does the database operations by this object
|
||||
*/
|
||||
DatabaseHandler mHandler;
|
||||
|
||||
/**
|
||||
* A callback method which is invoked when the content provider is starting up
|
||||
*/
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
mHandler = new DatabaseHandler(getContext());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType(final Uri uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* A callback method which is by the default content uri
|
||||
*/
|
||||
@Override
|
||||
public Cursor query(final Uri uri,
|
||||
final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs,
|
||||
final String sortOrder) {
|
||||
Log.d(TAG, "query: Perform Query for [" + uri + "]");
|
||||
|
||||
final int resId = uriMatcher.match(uri);
|
||||
|
||||
switch (resId) {
|
||||
case Constants.CHARACTER_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Characters.");
|
||||
return mHandler.getAllCharacters(Constants.PROJECTION_CHARACTER, null, null);
|
||||
case Constants.KART_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Karts.");
|
||||
return mHandler.getAllKarts(Constants.PROJECTION_KART, null, null);
|
||||
case Constants.ACCESSORY_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Acessories.");
|
||||
return mHandler.getAllAccessories(Constants.PROJECTION_ACCESSORY, null, null);
|
||||
case Constants.TRACK_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Tracks.");
|
||||
return mHandler.getAllTracks(Constants.PROJECTION_TRACK, null, null);
|
||||
case Constants.WHEELS_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Wheels.");
|
||||
return mHandler.getAllWheels(Constants.PROJECTION_WHEELS, null, null);
|
||||
default:
|
||||
Log.d(TAG, "query: UriMatcher returned: " + uriMatcher.match(uri));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delete(final Uri uri, final String selection, final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Uri insert(final Uri uri, final ContentValues values) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(final Uri uri, final ContentValues values, final String selection,
|
||||
final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentValues;
|
||||
import android.content.UriMatcher;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
* Created by aldo7224 on 16.08.17.
|
||||
*/
|
||||
|
||||
public class CharacterContentProvider extends ContentProvider {
|
||||
|
||||
private static final String TAG = "CharacterProvider";
|
||||
public static final String PROVIDER_NAME
|
||||
= "com.de.aldo_apps.aldo.mariokartcircuitselector";
|
||||
|
||||
/**
|
||||
* A uri to do operations on cust_master table. A content provider is identified by its uri
|
||||
*/
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/characters");
|
||||
|
||||
private static final UriMatcher uriMatcher;
|
||||
|
||||
static {
|
||||
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "characters", Constants.CHARACTER_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "tracks", Constants.TRACK_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "karts", Constants.KART_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "wheels", Constants.WHEELS_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "accessories", Constants.ACCESSORY_LOADER_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* This content provider does the database operations by this object
|
||||
*/
|
||||
DatabaseHandler mHandler;
|
||||
|
||||
/**
|
||||
* A callback method which is invoked when the content provider is starting up
|
||||
*/
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
mHandler = new DatabaseHandler(getContext());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType(final Uri uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* A callback method which is by the default content uri
|
||||
*/
|
||||
@Override
|
||||
public Cursor query(final Uri uri,
|
||||
final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs,
|
||||
final String sortOrder) {
|
||||
Log.d(TAG, "query: Perform Query for [" + uri + "]");
|
||||
|
||||
final int resId = uriMatcher.match(uri);
|
||||
|
||||
switch (resId) {
|
||||
case Constants.CHARACTER_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Characters.");
|
||||
return mHandler.getAllCharacters(Constants.PROJECTION_CHARACTER, null, null);
|
||||
case Constants.KART_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Karts.");
|
||||
return mHandler.getAllKarts(Constants.PROJECTION_KART, null, null);
|
||||
case Constants.ACCESSORY_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Acessories.");
|
||||
return mHandler.getAllAccessories(Constants.PROJECTION_ACCESSORY, null, null);
|
||||
case Constants.TRACK_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Tracks.");
|
||||
return mHandler.getAllTracks(Constants.PROJECTION_TRACK, null, null);
|
||||
case Constants.WHEELS_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Wheels.");
|
||||
return mHandler.getAllWheels(Constants.PROJECTION_WHEELS, null, null);
|
||||
default:
|
||||
Log.d(TAG, "query: UriMatcher returned: " + uriMatcher.match(uri));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delete(final Uri uri, final String selection, final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Uri insert(final Uri uri, final ContentValues values) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(final Uri uri, final ContentValues values, final String selection,
|
||||
final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -8,164 +8,177 @@ package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
* @version 0.1
|
||||
* @since 07.08.2017
|
||||
*/
|
||||
public class Constants {
|
||||
public final class Constants {
|
||||
|
||||
/**
|
||||
* The Version Code of the Database.
|
||||
*/
|
||||
static final Integer DATABASE_VERSION = 1;
|
||||
public static final Integer DATABASE_VERSION = 1;
|
||||
|
||||
/**
|
||||
* As SQLite does not have a native boolean value, we use integers to represent true and false.
|
||||
* This is the value for a true statement.
|
||||
*/
|
||||
public final static Integer TRUE = 1;
|
||||
public static final Integer TRUE = 1;
|
||||
|
||||
/**
|
||||
* As SQLite does not have a native boolean value, we use integers to represent true and false.
|
||||
* This is the value for a false statement.
|
||||
*/
|
||||
final static Integer FALSE = 0;
|
||||
public final static Integer FALSE = 0;
|
||||
|
||||
public static final int BASE_LOADER_ID = 0;
|
||||
|
||||
public static final int CHARACTER_LOADER_ID = BASE_LOADER_ID;
|
||||
|
||||
public static final int KART_LOADER_ID = BASE_LOADER_ID + 1;
|
||||
|
||||
public static final int TRACK_LOADER_ID = BASE_LOADER_ID + 2;
|
||||
|
||||
public static final int ACCESSORY_LOADER_ID = BASE_LOADER_ID + 3;
|
||||
|
||||
public static final int WHEELS_LOADER_ID = BASE_LOADER_ID + 4;
|
||||
|
||||
|
||||
/**
|
||||
* The Name of the complete database.
|
||||
*/
|
||||
static final String DATABASE_NAME = "mario_kart_circuit_selector";
|
||||
public static final String DATABASE_NAME = "mario_kart_circuit_selector";
|
||||
|
||||
/**
|
||||
* The name of the table containing all information according accessories.
|
||||
*/
|
||||
static final String TABLE_ACCESSORY = "accessory";
|
||||
public static final String TABLE_ACCESSORY = "accessory";
|
||||
|
||||
/**
|
||||
* The name of the table containing all information according characters.
|
||||
*/
|
||||
static final String TABLE_CHARACTER = "character";
|
||||
public static final String TABLE_CHARACTER = "character";
|
||||
|
||||
/**
|
||||
* The name of the table containing all information according games.
|
||||
*/
|
||||
static final String TABLE_GAME = "game";
|
||||
public static final String TABLE_GAME = "game";
|
||||
|
||||
/**
|
||||
* The name of the table containing all information according karts.
|
||||
*/
|
||||
static final String TABLE_KART = "kart";
|
||||
public static final String TABLE_KART = "kart";
|
||||
|
||||
/**
|
||||
* The name of the table containing all information according rulesets.
|
||||
*/
|
||||
static final String TABLE_RULESET = "ruleset";
|
||||
public static final String TABLE_RULESET = "ruleset";
|
||||
|
||||
/**
|
||||
* The name of the table containing all information according tracks.
|
||||
*/
|
||||
static final String TABLE_TRACK = "track";
|
||||
public static final String TABLE_TRACK = "track";
|
||||
|
||||
/**
|
||||
* The name of the table containing all information according wheels.
|
||||
*/
|
||||
static final String TABLE_WHEELS = "wheels";
|
||||
public static final String TABLE_WHEELS = "wheels";
|
||||
|
||||
/**
|
||||
* The global KEY for the _id field in the database.
|
||||
*/
|
||||
static final String KEY_ID = "_id";
|
||||
public static final String KEY_ID = "_id";
|
||||
|
||||
/**
|
||||
* The global KEY for the name field in the database.
|
||||
*/
|
||||
static final String KEY_NAME = "name";
|
||||
public static final String KEY_NAME = "name";
|
||||
|
||||
/**
|
||||
* The global KEY for the game field in the database.
|
||||
*/
|
||||
static final String KEY_GAME = "game";
|
||||
public static final String KEY_GAME = "game";
|
||||
|
||||
/**
|
||||
* The global KEY for the available field in the database.
|
||||
*/
|
||||
static final String KEY_AVAILABLE = "available";
|
||||
public static final String KEY_AVAILABLE = "available";
|
||||
|
||||
/**
|
||||
* The global KEY for the weight field in the database.
|
||||
*/
|
||||
static final String KEY_WEIGHT = "weight";
|
||||
public static final String KEY_WEIGHT = "weight";
|
||||
|
||||
/**
|
||||
* The global KEY for the cover uri field in the database.
|
||||
*/
|
||||
static final String KEY_COVER_URI = "cover_uri";
|
||||
public static final String KEY_COVER_URI = "cover_uri";
|
||||
|
||||
/**
|
||||
* The global KEY for the wheels field in the database.
|
||||
*/
|
||||
static final String KEY_WHEELS = "wheels";
|
||||
public static final String KEY_WHEELS = "wheels";
|
||||
|
||||
/**
|
||||
* The global KEY for the accessory field in the database.
|
||||
*/
|
||||
static final String KEY_ACCESSORY = "accessory";
|
||||
public static final String KEY_ACCESSORY = "accessory";
|
||||
|
||||
/**
|
||||
* The global KEY for the dedicated driver field in the database.
|
||||
*/
|
||||
static final String KEY_DEDICATED_DRIVER = "dedicated_driver";
|
||||
public static final String KEY_DEDICATED_DRIVER = "dedicated_driver";
|
||||
|
||||
/**
|
||||
* The global KEY for the free for all field in the database.
|
||||
*/
|
||||
static final String KEY_FREE_FOR_ALL = "free_for_all";
|
||||
public static final String KEY_FREE_FOR_ALL = "free_for_all";
|
||||
|
||||
/**
|
||||
* The global KEY for the mirror class field in the database.
|
||||
*/
|
||||
static final String KEY_MIRROR_CLASS = "mirror_class";
|
||||
public static final String KEY_MIRROR_CLASS = "mirror_class";
|
||||
|
||||
/**
|
||||
* The global KEY for the 50 ccm field in the database.
|
||||
*/
|
||||
static final String KEY_50_CCM = "50_ccm";
|
||||
public static final String KEY_50_CCM = "50_ccm";
|
||||
|
||||
/**
|
||||
* The global KEY for the 100 ccm field in the database.
|
||||
*/
|
||||
static final String KEY_100_CCM = "100_ccm";
|
||||
public static final String KEY_100_CCM = "100_ccm";
|
||||
|
||||
/**
|
||||
* The global KEY for the 150 ccm field in the database.
|
||||
*/
|
||||
static final String KEY_150_CCM = "150_ccm";
|
||||
public static final String KEY_150_CCM = "150_ccm";
|
||||
|
||||
/**
|
||||
* The global KEY for the 200 ccm field in the database.
|
||||
*/
|
||||
static final String KEY_200_CCM = "200_ccm";
|
||||
public static final String KEY_200_CCM = "200_ccm";
|
||||
|
||||
/**
|
||||
* The global KEY for the kart free for all field in the database.
|
||||
*/
|
||||
static final String KEY_KART_FREE_FOR_ALL = "kart_free_for_all";
|
||||
public static final String KEY_KART_FREE_FOR_ALL = "kart_free_for_all";
|
||||
|
||||
/**
|
||||
* The global KEY for the bikes field in the database.
|
||||
*/
|
||||
static final String KEY_BIKES = "bikes";
|
||||
public static final String KEY_BIKES = "bikes";
|
||||
|
||||
/**
|
||||
* The global KEY for the package field in the database.
|
||||
*/
|
||||
static final String KEY_PACKAGE = "package";
|
||||
public static final String KEY_PACKAGE = "package";
|
||||
|
||||
/**
|
||||
* The global KEY for the number field in the database.
|
||||
*/
|
||||
static final String KEY_NUMBER = "number";
|
||||
public static final String KEY_NUMBER = "number";
|
||||
|
||||
/**
|
||||
* The Projection to retrieve all Information of a game object from database.
|
||||
*/
|
||||
static final String[] PROJECTION_GAME = {
|
||||
public static final String[] PROJECTION_GAME = {
|
||||
KEY_ID,
|
||||
KEY_NAME,
|
||||
KEY_COVER_URI
|
||||
@@ -174,7 +187,7 @@ public class Constants {
|
||||
/**
|
||||
* The Projection to retrieve all Information of a track object from database.
|
||||
*/
|
||||
static final String[] PROJECTION_TRACK = {
|
||||
public static final String[] PROJECTION_TRACK = {
|
||||
KEY_ID,
|
||||
KEY_NAME,
|
||||
KEY_GAME,
|
||||
@@ -186,7 +199,7 @@ public class Constants {
|
||||
/**
|
||||
* The Projection to retrieve all Information of a character object from database.
|
||||
*/
|
||||
static final String[] PROJECTION_CHARACTER = {
|
||||
public static final String[] PROJECTION_CHARACTER = {
|
||||
KEY_ID,
|
||||
KEY_NAME,
|
||||
KEY_GAME,
|
||||
@@ -194,10 +207,14 @@ public class Constants {
|
||||
KEY_AVAILABLE
|
||||
};
|
||||
|
||||
public static final String[] PROJECTION_TEST = {
|
||||
KEY_NAME
|
||||
};
|
||||
|
||||
/**
|
||||
* The Projection to retrieve all Information of a kart object from database.
|
||||
*/
|
||||
static final String[] PROJECTION_KART = {
|
||||
public static final String[] PROJECTION_KART = {
|
||||
KEY_ID,
|
||||
KEY_NAME,
|
||||
KEY_GAME,
|
||||
@@ -212,7 +229,7 @@ public class Constants {
|
||||
/**
|
||||
* The Projection to retrieve all Information of a ruleset object from database.
|
||||
*/
|
||||
static final String[] PROJECTION_RULESET = {
|
||||
public static final String[] PROJECTION_RULESET = {
|
||||
KEY_ID,
|
||||
KEY_GAME,
|
||||
KEY_MIRROR_CLASS,
|
||||
@@ -227,7 +244,7 @@ public class Constants {
|
||||
/**
|
||||
* The Projection to retrieve all Information of a accessory object from database.
|
||||
*/
|
||||
static final String[] PROJECTION_ACCESSORY = {
|
||||
public static final String[] PROJECTION_ACCESSORY = {
|
||||
KEY_ID,
|
||||
KEY_NAME,
|
||||
KEY_GAME,
|
||||
@@ -237,7 +254,7 @@ public class Constants {
|
||||
/**
|
||||
* The Projection to retrieve all Information of a wheels object from database.
|
||||
*/
|
||||
static final String[] PROJECTION_WHEELS = {
|
||||
public static final String[] PROJECTION_WHEELS = {
|
||||
KEY_ID,
|
||||
KEY_NAME,
|
||||
KEY_GAME,
|
||||
@@ -248,25 +265,25 @@ public class Constants {
|
||||
/**
|
||||
* Enum Value defining the position of the Character Tab.
|
||||
*/
|
||||
static final int CHARACTER = 0;
|
||||
public static final int CHARACTER = 0;
|
||||
|
||||
/**
|
||||
* Enum Value defining the position of the Kart Tab.
|
||||
*/
|
||||
static final int KART = 1;
|
||||
public static final int KART = 1;
|
||||
|
||||
/**
|
||||
* Enum Value defining the position of the Track Tab.
|
||||
*/
|
||||
static final int TRACK = 2;
|
||||
public static final int TRACK = 2;
|
||||
|
||||
/**
|
||||
* Enum Value defining the position of the Accessory Tab.
|
||||
*/
|
||||
static final int ACCESSORY = 3;
|
||||
public static final int ACCESSORY = 3;
|
||||
|
||||
/**
|
||||
* Enum Value defining the position of the Wheels Tab.
|
||||
*/
|
||||
static final int WHEELS = 4;
|
||||
public static final int WHEELS = 4;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.DatabaseUtils;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -195,650 +196,109 @@ public class DatabaseHandler extends SQLiteAssetHelper {
|
||||
* Retrieves all Tracks from Database. If a Game is provided, all tracks of this specific
|
||||
* game will be retrieved.
|
||||
*
|
||||
* @param game The game of which all tracks should be retrieved.
|
||||
* @param onlyAvailable If true, only available objects will be returned, otherwise all
|
||||
*
|
||||
* @return List containing all Track Objects retrieved from Database.
|
||||
*/
|
||||
public ArrayList<Track> getAllTracks(@Nullable final Game game,
|
||||
final boolean onlyAvailable) {
|
||||
public Cursor getAllTracks(final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs) {
|
||||
final SQLiteDatabase database = this.getReadableDatabase();
|
||||
|
||||
final String selectionClause;
|
||||
final String[] selectionArgs;
|
||||
if (game != null && onlyAvailable) {
|
||||
selectionClause = Constants.KEY_GAME + "=? AND " + Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{game.getName(), String.valueOf(Constants.TRUE)};
|
||||
} else if (game != null) {
|
||||
selectionClause = Constants.KEY_GAME + "=?";
|
||||
selectionArgs = new String[]{game.getName()};
|
||||
} else if (onlyAvailable) {
|
||||
selectionClause = Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{String.valueOf(Constants.TRUE)};
|
||||
} else {
|
||||
selectionClause = null;
|
||||
selectionArgs = null;
|
||||
}
|
||||
|
||||
final Cursor cursor = database.query(Constants.TABLE_TRACK, Constants.PROJECTION_TRACK,
|
||||
selectionClause, selectionArgs, null, null, null, null);
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
Log.d(TAG, "getAllTracks: Moving cursor to first.");
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: cursor is null or cannot be moved to first.");
|
||||
return null;
|
||||
}
|
||||
|
||||
final ArrayList<Track> allAvailableTrack = new ArrayList<>();
|
||||
|
||||
do {
|
||||
final int idIdx = cursor.getColumnIndex(Constants.KEY_ID);
|
||||
final int nameIdx = cursor.getColumnIndex(Constants.KEY_NAME);
|
||||
final int gameIdx = cursor.getColumnIndex(Constants.KEY_GAME);
|
||||
final int packageIdx = cursor.getColumnIndex(Constants.KEY_PACKAGE);
|
||||
final int numberIdx = cursor.getColumnIndex(Constants.KEY_NUMBER);
|
||||
final int availableIdx = cursor.getColumnIndex(Constants.KEY_AVAILABLE);
|
||||
|
||||
final Track track = new Track();
|
||||
boolean isValid = true;
|
||||
if (idIdx >= 0) {
|
||||
track.setId(cursor.getInt(idIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: No such column [" + Constants.KEY_ID + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (nameIdx >= 0) {
|
||||
track.setName(cursor.getString(nameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: No such column [" + Constants.KEY_NAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (gameIdx >= 0) {
|
||||
track.setGame(cursor.getString(gameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: No such column [" + Constants.KEY_GAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (packageIdx >= 0) {
|
||||
track.setPackage(cursor.getString(packageIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: No such column [" + Constants.KEY_PACKAGE + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (numberIdx >= 0) {
|
||||
track.setPackage(cursor.getString(numberIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: No such column [" + Constants.KEY_NUMBER + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (availableIdx >= 0) {
|
||||
track.setAvailable(cursor.getInt(availableIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: No such column [" + Constants.KEY_AVAILABLE + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
allAvailableTrack.add(track);
|
||||
} else {
|
||||
Log.d(TAG, "getAllTracks: Do not add Track as one or more arguments are invalid.");
|
||||
}
|
||||
|
||||
} while (cursor.moveToNext());
|
||||
|
||||
cursor.close();
|
||||
database.close();
|
||||
|
||||
// return contact
|
||||
return allAvailableTrack;
|
||||
Log.d(TAG, "getAllTracks: Creating Cursor for Tracks.");
|
||||
final Cursor cursor = database.query(Constants.TABLE_TRACK, projection,
|
||||
selection, selectionArgs, null, null, null, null);
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all Karts from Database. If a Game is provided, all karts of this specific
|
||||
* game will be retrieved.
|
||||
*
|
||||
* @param game The game of which all tracks should be retrieved.
|
||||
* @param onlyAvailable If true, only available objects will be returned, otherwise all
|
||||
*
|
||||
* @return List containing all Kart Objects retrieved from Database.
|
||||
*/
|
||||
public ArrayList<Kart> getAllKarts(@Nullable final Game game,
|
||||
final boolean onlyAvailable) {
|
||||
public Cursor getAllKarts(final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs) {
|
||||
final SQLiteDatabase database = this.getReadableDatabase();
|
||||
|
||||
final String selectionClause;
|
||||
final String[] selectionArgs;
|
||||
if (game != null && onlyAvailable) {
|
||||
selectionClause = Constants.KEY_GAME + "=? AND " + Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{game.getName(), String.valueOf(Constants.TRUE)};
|
||||
} else if (game != null) {
|
||||
selectionClause = Constants.KEY_GAME + "=?";
|
||||
selectionArgs = new String[]{game.getName()};
|
||||
} else if (onlyAvailable) {
|
||||
selectionClause = Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{String.valueOf(Constants.TRUE)};
|
||||
} else {
|
||||
selectionClause = null;
|
||||
selectionArgs = null;
|
||||
}
|
||||
|
||||
final Cursor cursor = database.query(Constants.TABLE_KART, Constants.PROJECTION_KART,
|
||||
selectionClause, selectionArgs, null, null, null, null);
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
Log.d(TAG, "getAllKarts: Moving cursor to first.");
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: cursor is null or cannot be moved to first.");
|
||||
return null;
|
||||
}
|
||||
|
||||
final ArrayList<Kart> allAvailableKarts = new ArrayList<>();
|
||||
|
||||
do {
|
||||
final int idIdx = cursor.getColumnIndex(Constants.KEY_ID);
|
||||
final int nameIdx = cursor.getColumnIndex(Constants.KEY_NAME);
|
||||
final int gameIdx = cursor.getColumnIndex(Constants.KEY_GAME);
|
||||
final int weightIdx = cursor.getColumnIndex(Constants.KEY_WEIGHT);
|
||||
final int accessoryIdx = cursor.getColumnIndex(Constants.KEY_ACCESSORY);
|
||||
final int wheelsIdx = cursor.getColumnIndex(Constants.KEY_WHEELS);
|
||||
final int freeForAllIdx = cursor.getColumnIndex(Constants.KEY_FREE_FOR_ALL);
|
||||
final int availableIdx = cursor.getColumnIndex(Constants.KEY_AVAILABLE);
|
||||
|
||||
final Kart kart = new Kart();
|
||||
boolean isValid = true;
|
||||
if (idIdx >= 0) {
|
||||
kart.setId(cursor.getInt(idIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_ID + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (nameIdx >= 0) {
|
||||
kart.setName(cursor.getString(nameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_NAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (gameIdx >= 0) {
|
||||
kart.setGame(cursor.getString(gameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_GAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (weightIdx >= 0) {
|
||||
kart.setWeight(cursor.getString(weightIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_WEIGHT + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (accessoryIdx >= 0) {
|
||||
kart.setAccessory(cursor.getInt(accessoryIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_ACCESSORY + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (wheelsIdx >= 0) {
|
||||
kart.setWheels(cursor.getInt(wheelsIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_WHEELS + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (freeForAllIdx >= 0) {
|
||||
kart.setFreeForAll(cursor.getInt(freeForAllIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_FREE_FOR_ALL + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (availableIdx >= 0) {
|
||||
kart.setAvailable(cursor.getInt(availableIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: No such column [" + Constants.KEY_AVAILABLE + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
allAvailableKarts.add(kart);
|
||||
} else {
|
||||
Log.d(TAG, "getAllKarts: Do not add Kart as one or more arguments are invalid.");
|
||||
}
|
||||
|
||||
} while (cursor.moveToNext());
|
||||
|
||||
cursor.close();
|
||||
database.close();
|
||||
|
||||
// return contact
|
||||
return allAvailableKarts;
|
||||
Log.d(TAG, "getAllKarts: Creating Cursor for Karts.");
|
||||
final Cursor cursor = database.query(Constants.TABLE_KART, projection, selection,
|
||||
selectionArgs, null, null, null, null);
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all Characters from Database. If a Game is provided, all characters of this
|
||||
* specific game will be retrieved.
|
||||
*
|
||||
* @param game The game of which all tracks should be retrieved.
|
||||
* @param onlyAvailable If true, only available objects will be returned, otherwise all
|
||||
* @param projection The character projection.
|
||||
* @param selection The selection clause.
|
||||
* @param selectionArgs The selection arguments.
|
||||
*
|
||||
* @return List containing all Character Objects retrieved from Database.
|
||||
* @return Cursor containing all Character Objects retrieved from Database.
|
||||
*/
|
||||
public ArrayList<Character> getAllCharacters(@Nullable final Game game,
|
||||
final boolean onlyAvailable) {
|
||||
public Cursor getAllCharacters(final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs) {
|
||||
final SQLiteDatabase database = this.getReadableDatabase();
|
||||
|
||||
final String selectionClause;
|
||||
final String[] selectionArgs;
|
||||
if (game != null && onlyAvailable) {
|
||||
selectionClause = Constants.KEY_GAME + "=? AND " + Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{game.getName(), String.valueOf(Constants.TRUE)};
|
||||
} else if (game != null) {
|
||||
selectionClause = Constants.KEY_GAME + "=?";
|
||||
selectionArgs = new String[]{game.getName()};
|
||||
} else if (onlyAvailable) {
|
||||
selectionClause = Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{String.valueOf(Constants.TRUE)};
|
||||
} else {
|
||||
selectionClause = null;
|
||||
selectionArgs = null;
|
||||
}
|
||||
|
||||
Log.d(TAG, "getAllCharacters: Creating Cursor for Characters.");
|
||||
final Cursor cursor = database.query(Constants.TABLE_CHARACTER,
|
||||
Constants.PROJECTION_CHARACTER, selectionClause, selectionArgs, null, null, null,
|
||||
projection, selection, 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<Character> allAvailableCharacters = new ArrayList<>();
|
||||
|
||||
do {
|
||||
final int idIdx = cursor.getColumnIndex(Constants.KEY_ID);
|
||||
final int nameIdx = cursor.getColumnIndex(Constants.KEY_NAME);
|
||||
final int gameIdx = cursor.getColumnIndex(Constants.KEY_GAME);
|
||||
final int weightIdx = cursor.getColumnIndex(Constants.KEY_WEIGHT);
|
||||
final int availableIdx = cursor.getColumnIndex(Constants.KEY_AVAILABLE);
|
||||
|
||||
final Character character = new Character();
|
||||
boolean isValid = true;
|
||||
|
||||
if (idIdx >= 0) {
|
||||
character.setId(cursor.getInt(idIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllCharacters: No such column [" + Constants.KEY_ID + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (nameIdx >= 0) {
|
||||
character.setName(cursor.getString(nameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllCharacters: No such column [" + Constants.KEY_NAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (gameIdx >= 0) {
|
||||
character.setGame(cursor.getString(gameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllCharacters: No such column [" + Constants.KEY_GAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (weightIdx >= 0) {
|
||||
character.setWeight(cursor.getString(weightIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllCharacters: No such column [" + Constants.KEY_WEIGHT + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (availableIdx >= 0) {
|
||||
character.setAvailable(cursor.getInt(availableIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllCharacters: No such column [" + Constants.KEY_AVAILABLE + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
allAvailableCharacters.add(character);
|
||||
} else {
|
||||
Log.d(TAG, "getAllCharacters: Do not add Character as one or more arguments " +
|
||||
"are invalid.");
|
||||
}
|
||||
|
||||
} while (cursor.moveToNext());
|
||||
|
||||
cursor.close();
|
||||
database.close();
|
||||
|
||||
// return contact
|
||||
return allAvailableCharacters;
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all Rulesets from Database. If a Game is provided, the ruleset of this specific
|
||||
* game will be retrieved.
|
||||
*
|
||||
* @param game The game of which all tracks should be retrieved.
|
||||
* @param onlyAvailable If true, only available objects will be returned, otherwise all
|
||||
*
|
||||
* @return List containing all Ruleset Objects retrieved from Database.
|
||||
*/
|
||||
public ArrayList<Ruleset> getAllRulesets(@Nullable final Game game,
|
||||
final boolean onlyAvailable) {
|
||||
public Cursor getAllRulesets(final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs) {
|
||||
final SQLiteDatabase database = this.getReadableDatabase();
|
||||
|
||||
final String selectionClause;
|
||||
final String[] selectionArgs;
|
||||
if (game != null && onlyAvailable) {
|
||||
selectionClause = Constants.KEY_GAME + "=? AND " + Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{game.getName(), String.valueOf(Constants.TRUE)};
|
||||
} else if (game != null) {
|
||||
selectionClause = Constants.KEY_GAME + "=?";
|
||||
selectionArgs = new String[]{game.getName()};
|
||||
} else if (onlyAvailable) {
|
||||
selectionClause = Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{String.valueOf(Constants.TRUE)};
|
||||
} else {
|
||||
selectionClause = null;
|
||||
selectionArgs = null;
|
||||
}
|
||||
|
||||
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<Ruleset> allAvailableRulesets = new ArrayList<>();
|
||||
do {
|
||||
final int idIdx = cursor.getColumnIndex(Constants.KEY_ID);
|
||||
final int gameIdx = cursor.getColumnIndex(Constants.KEY_GAME);
|
||||
final int mirrorIdx = cursor.getColumnIndex(Constants.KEY_MIRROR_CLASS);
|
||||
final int ccm50Idx = cursor.getColumnIndex(Constants.KEY_50_CCM);
|
||||
final int ccm100Idx = cursor.getColumnIndex(Constants.KEY_100_CCM);
|
||||
final int ccm150Idx = cursor.getColumnIndex(Constants.KEY_150_CCM);
|
||||
final int ccm200Idx = cursor.getColumnIndex(Constants.KEY_200_CCM);
|
||||
final int freeForAllIdx = cursor.getColumnIndex(Constants.KEY_KART_FREE_FOR_ALL);
|
||||
final int bikesIdx = cursor.getColumnIndex(Constants.KEY_BIKES);
|
||||
|
||||
final Ruleset ruleset = new Ruleset();
|
||||
boolean isValid = true;
|
||||
|
||||
if (idIdx >= 0) {
|
||||
ruleset.setId(cursor.getInt(idIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_ID + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (gameIdx >= 0) {
|
||||
ruleset.setGame(cursor.getString(gameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_GAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (mirrorIdx >= 0) {
|
||||
ruleset.setGame(cursor.getString(gameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_GAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (ccm50Idx >= 0) {
|
||||
ruleset.set50CcmAvailable(cursor.getInt(ccm50Idx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_50_CCM + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (ccm100Idx >= 0) {
|
||||
ruleset.set100CcmAvailable(cursor.getInt(ccm100Idx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_100_CCM + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (ccm150Idx >= 0) {
|
||||
ruleset.set150CcmAvailable(cursor.getInt(ccm150Idx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_150_CCM + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (ccm200Idx >= 0) {
|
||||
ruleset.set200CcmAvailable(cursor.getInt(ccm200Idx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_200_CCM + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (freeForAllIdx >= 0) {
|
||||
ruleset.setKartsFreeForAll(cursor.getInt(freeForAllIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_KART_FREE_FOR_ALL
|
||||
+ "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (bikesIdx >= 0) {
|
||||
ruleset.setBikesAvailable(cursor.getInt(bikesIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: No such column [" + Constants.KEY_BIKES + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
allAvailableRulesets.add(ruleset);
|
||||
} else {
|
||||
Log.d(TAG, "getAllRulesets: Do not add Ruleset as one or more arguments " +
|
||||
"are invalid.");
|
||||
}
|
||||
|
||||
} while (cursor.moveToNext());
|
||||
|
||||
cursor.close();
|
||||
database.close();
|
||||
|
||||
// return contact
|
||||
return allAvailableRulesets;
|
||||
Log.d(TAG, "getAllRulesets: Creating Cursor for Rulesets.");
|
||||
final Cursor cursor = database.query(Constants.TABLE_RULESET, projection, selection,
|
||||
selectionArgs, null, null, null, null);
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all Accessories from Database. If a Game is provided, all accessories of this
|
||||
* specific game will be retrieved.
|
||||
*
|
||||
* @param game The game of which all tracks should be retrieved.
|
||||
* @param onlyAvailable If true, only available objects will be returned, otherwise all
|
||||
*
|
||||
* @return List containing all Accessory Objects retrieved from Database.
|
||||
*/
|
||||
public ArrayList<Accessory> getAllAccessories(@Nullable final Game game,
|
||||
final boolean onlyAvailable) {
|
||||
public Cursor getAllAccessories(final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs) {
|
||||
final SQLiteDatabase database = this.getReadableDatabase();
|
||||
|
||||
final String selectionClause;
|
||||
final String[] selectionArgs;
|
||||
if (game != null && onlyAvailable) {
|
||||
selectionClause = Constants.KEY_GAME + "=? AND " + Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{game.getName(), String.valueOf(Constants.TRUE)};
|
||||
} else if (game != null) {
|
||||
selectionClause = Constants.KEY_GAME + "=?";
|
||||
selectionArgs = new String[]{game.getName()};
|
||||
} else if (onlyAvailable) {
|
||||
selectionClause = Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{String.valueOf(Constants.TRUE)};
|
||||
} else {
|
||||
selectionClause = null;
|
||||
selectionArgs = null;
|
||||
}
|
||||
|
||||
final Cursor cursor = database.query(Constants.TABLE_ACCESSORY,
|
||||
Constants.PROJECTION_ACCESSORY, selectionClause, selectionArgs, null, null, null,
|
||||
projection, selection, 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<Accessory> allAvailableAccessories = new ArrayList<>();
|
||||
|
||||
do {
|
||||
final int idIdx = cursor.getColumnIndex(Constants.KEY_ID);
|
||||
final int nameIdx = cursor.getColumnIndex(Constants.KEY_NAME);
|
||||
final int gameIdx = cursor.getColumnIndex(Constants.KEY_GAME);
|
||||
final int availableIdx = cursor.getColumnIndex(Constants.KEY_AVAILABLE);
|
||||
|
||||
final Accessory accessory = new Accessory();
|
||||
boolean isValid = true;
|
||||
if (idIdx >= 0) {
|
||||
accessory.setId(cursor.getInt(idIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllAccessories: No such column [" + Constants.KEY_ID + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (nameIdx >= 0) {
|
||||
accessory.setName(cursor.getString(nameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllAccessories: No such column [" + Constants.KEY_NAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (gameIdx >= 0) {
|
||||
accessory.setGame(cursor.getString(gameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllAccessories: No such column [" + Constants.KEY_GAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (availableIdx >= 0) {
|
||||
accessory.setAvailable(cursor.getInt(availableIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllAccessories: No such column [" + Constants.KEY_AVAILABLE + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
allAvailableAccessories.add(accessory);
|
||||
} else {
|
||||
Log.d(TAG, "getAllAccessories: Do not add Accessory as one or more arguments " +
|
||||
"are invalid.");
|
||||
}
|
||||
|
||||
} while (cursor.moveToNext());
|
||||
|
||||
cursor.close();
|
||||
database.close();
|
||||
|
||||
// return contact
|
||||
return allAvailableAccessories;
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all Wheels from Database. If a Game is provided, all wheels of this specific
|
||||
* game will be retrieved.
|
||||
*
|
||||
* @param game The game of which all tracks should be retrieved.
|
||||
* @param onlyAvailable If true, only available objects will be returned, otherwise all
|
||||
*
|
||||
* @return List containing all Wheels Objects retrieved from Database.
|
||||
*/
|
||||
public ArrayList<Wheels> getAllWheels(@Nullable final Game game,
|
||||
final boolean onlyAvailable) {
|
||||
public Cursor getAllWheels(final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs) {
|
||||
final SQLiteDatabase database = this.getReadableDatabase();
|
||||
|
||||
final String selectionClause;
|
||||
final String[] selectionArgs;
|
||||
if (game != null && onlyAvailable) {
|
||||
selectionClause = Constants.KEY_GAME + "=? AND " + Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{game.getName(), String.valueOf(Constants.TRUE)};
|
||||
} else if (game != null) {
|
||||
selectionClause = Constants.KEY_GAME + "=?";
|
||||
selectionArgs = new String[]{game.getName()};
|
||||
} else if (onlyAvailable) {
|
||||
selectionClause = Constants.KEY_AVAILABLE + "=?";
|
||||
selectionArgs = new String[]{String.valueOf(Constants.TRUE)};
|
||||
} else {
|
||||
selectionClause = null;
|
||||
selectionArgs = null;
|
||||
}
|
||||
|
||||
final Cursor cursor = database.query(Constants.TABLE_WHEELS, Constants.PROJECTION_WHEELS,
|
||||
selectionClause, selectionArgs, null, null, null, null);
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
Log.d(TAG, "getAllWheels: Moving cursor to first.");
|
||||
} else {
|
||||
Log.d(TAG, "getAllWheels: cursor is null or cannot be moved to first.");
|
||||
return null;
|
||||
}
|
||||
|
||||
final ArrayList<Wheels> allAvailableWheels = new ArrayList<>();
|
||||
|
||||
do {
|
||||
final int idIdx = cursor.getColumnIndex(Constants.KEY_ID);
|
||||
final int nameIdx = cursor.getColumnIndex(Constants.KEY_NAME);
|
||||
final int gameIdx = cursor.getColumnIndex(Constants.KEY_GAME);
|
||||
final int availableIdx = cursor.getColumnIndex(Constants.KEY_AVAILABLE);
|
||||
|
||||
final Wheels wheels = new Wheels();
|
||||
boolean isValid = true;
|
||||
if (idIdx >= 0) {
|
||||
wheels.setId(cursor.getInt(idIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllWheels: No such column [" + Constants.KEY_ID + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (nameIdx >= 0) {
|
||||
wheels.setName(cursor.getString(nameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllWheels: No such column [" + Constants.KEY_NAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (gameIdx >= 0) {
|
||||
wheels.setGame(cursor.getString(gameIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllWheels: No such column [" + Constants.KEY_GAME + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (availableIdx >= 0) {
|
||||
wheels.setAvailable(cursor.getInt(availableIdx));
|
||||
} else {
|
||||
Log.d(TAG, "getAllWheels: No such column [" + Constants.KEY_AVAILABLE + "]");
|
||||
isValid = false;
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
allAvailableWheels.add(wheels);
|
||||
} else {
|
||||
Log.d(TAG, "getAllWheels: Do not add Wheels as one or more arguments are invalid.");
|
||||
}
|
||||
|
||||
} while (cursor.moveToNext());
|
||||
|
||||
cursor.close();
|
||||
database.close();
|
||||
final Cursor cursor = database.query(Constants.TABLE_WHEELS, projection, selection,
|
||||
selectionArgs, null, null, null, null);
|
||||
|
||||
// return contact
|
||||
return allAvailableWheels;
|
||||
return cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,19 +1,12 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
|
||||
import android.graphics.Color;
|
||||
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 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.adapters.CursorPagerAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -23,19 +16,9 @@ public class GameSelection extends AppCompatActivity {
|
||||
|
||||
private static final String TAG = "GameSelection";
|
||||
|
||||
private ArrayList<Kart> mAllKarts = new ArrayList<>();
|
||||
private ArrayList<Character> mAllCharacters = new ArrayList<>();
|
||||
private ArrayList<Track> mAllTracks = new ArrayList<>();
|
||||
private ArrayList<Wheels> mAllWheels = new ArrayList<>();
|
||||
private ArrayList<Accessory> mAllAccessories = new ArrayList<>();
|
||||
private final ArrayList<ArrayList<? extends Object>> mListOfObjects = new ArrayList<>();
|
||||
|
||||
private DatabaseHandler mDbHandler;
|
||||
|
||||
/**
|
||||
* Progress Bar to show during initial loading of the list.
|
||||
*/
|
||||
private MaterialDialog mProgressBar;
|
||||
private CursorPagerAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
@@ -43,32 +26,16 @@ public class GameSelection extends AppCompatActivity {
|
||||
setContentView(R.layout.activity_game_selection);
|
||||
|
||||
mDbHandler = new DatabaseHandler(this);
|
||||
showLoading();
|
||||
|
||||
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();
|
||||
}
|
||||
mAdapter = new CursorPagerAdapter(getSupportFragmentManager());
|
||||
updateUI();
|
||||
}
|
||||
|
||||
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 PagerItemAdapter(getLayoutInflater(), mDbHandler,
|
||||
this, getSupportFragmentManager(), mListOfObjects));
|
||||
|
||||
viewPager.setAdapter(mAdapter);
|
||||
|
||||
final NavigationTabBar navigationTabBar
|
||||
= (NavigationTabBar) findViewById(R.id.ntb_vertical);
|
||||
@@ -153,32 +120,4 @@ public class GameSelection extends AppCompatActivity {
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
|
||||
|
||||
private class GetFramDatabaseTask extends AsyncTask<String, Void, String> {
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentValues;
|
||||
import android.content.UriMatcher;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.Constants;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
|
||||
/**
|
||||
* Created by aldo7224 on 16.08.17.
|
||||
*/
|
||||
|
||||
public class KartContentProvider extends ContentProvider {
|
||||
|
||||
private static final String TAG = "KartProvider";
|
||||
public static final String PROVIDER_NAME
|
||||
= "com.de.aldo_apps.aldo.mariokartcircuitselector";
|
||||
|
||||
/**
|
||||
* A uri to do operations on cust_master table. A content provider is identified by its uri
|
||||
*/
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/karts");
|
||||
|
||||
private static final UriMatcher uriMatcher;
|
||||
|
||||
static {
|
||||
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "characters", Constants.CHARACTER_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "tracks", Constants.TRACK_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "karts", Constants.KART_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "wheels", Constants.WHEELS_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "accessories", Constants.ACCESSORY_LOADER_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* This content provider does the database operations by this object
|
||||
*/
|
||||
DatabaseHandler mHandler;
|
||||
|
||||
/**
|
||||
* A callback method which is invoked when the content provider is starting up
|
||||
*/
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
mHandler = new DatabaseHandler(getContext());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType(final Uri uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* A callback method which is by the default content uri
|
||||
*/
|
||||
@Override
|
||||
public Cursor query(final Uri uri,
|
||||
final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs,
|
||||
final String sortOrder) {
|
||||
Log.d(TAG, "query: Perform Query for [" + uri + "]");
|
||||
|
||||
final int resId = uriMatcher.match(uri);
|
||||
|
||||
switch (resId) {
|
||||
case Constants.CHARACTER_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Characters.");
|
||||
return mHandler.getAllCharacters(Constants.PROJECTION_CHARACTER, null, null);
|
||||
case Constants.KART_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Karts.");
|
||||
return mHandler.getAllKarts(Constants.PROJECTION_KART, null, null);
|
||||
case Constants.ACCESSORY_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Acessories.");
|
||||
return mHandler.getAllAccessories(Constants.PROJECTION_ACCESSORY, null, null);
|
||||
case Constants.TRACK_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Tracks.");
|
||||
return mHandler.getAllTracks(Constants.PROJECTION_TRACK, null, null);
|
||||
case Constants.WHEELS_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Wheels.");
|
||||
return mHandler.getAllWheels(Constants.PROJECTION_WHEELS, null, null);
|
||||
default:
|
||||
Log.d(TAG, "query: UriMatcher returned: " + uriMatcher.match(uri));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delete(final Uri uri, final String selection, final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Uri insert(final Uri uri, final ContentValues values) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(final Uri uri, final ContentValues values, final String selection,
|
||||
final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
|
||||
/**
|
||||
* Created by aldo7224 on 16.08.17.
|
||||
*/
|
||||
|
||||
public enum PagerType {
|
||||
CHARACTER,
|
||||
KART,
|
||||
TRACK,
|
||||
ACCESSORY,
|
||||
WHEEL
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentValues;
|
||||
import android.content.UriMatcher;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.Constants;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
|
||||
/**
|
||||
* Created by aldo7224 on 16.08.17.
|
||||
*/
|
||||
|
||||
public class TrackContentProvider extends ContentProvider {
|
||||
|
||||
private static final String TAG = "TrackProvider";
|
||||
public static final String PROVIDER_NAME
|
||||
= "com.de.aldo_apps.aldo.mariokartcircuitselector";
|
||||
|
||||
/**
|
||||
* A uri to do operations on cust_master table. A content provider is identified by its uri
|
||||
*/
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/tracks");
|
||||
|
||||
private static final UriMatcher uriMatcher;
|
||||
|
||||
static {
|
||||
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "characters", Constants.CHARACTER_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "tracks", Constants.TRACK_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "karts", Constants.KART_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "wheels", Constants.WHEELS_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "accessories", Constants.ACCESSORY_LOADER_ID); }
|
||||
|
||||
/**
|
||||
* This content provider does the database operations by this object
|
||||
*/
|
||||
DatabaseHandler mHandler;
|
||||
|
||||
/**
|
||||
* A callback method which is invoked when the content provider is starting up
|
||||
*/
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
mHandler = new DatabaseHandler(getContext());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType(final Uri uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* A callback method which is by the default content uri
|
||||
*/
|
||||
@Override
|
||||
public Cursor query(final Uri uri,
|
||||
final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs,
|
||||
final String sortOrder) {
|
||||
Log.d(TAG, "query: Perform Query for [" + uri + "]");
|
||||
|
||||
final int resId = uriMatcher.match(uri);
|
||||
|
||||
switch (resId) {
|
||||
case Constants.CHARACTER_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Characters.");
|
||||
return mHandler.getAllCharacters(Constants.PROJECTION_CHARACTER, null, null);
|
||||
case Constants.KART_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Karts.");
|
||||
return mHandler.getAllKarts(Constants.PROJECTION_KART, null, null);
|
||||
case Constants.ACCESSORY_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Acessories.");
|
||||
return mHandler.getAllAccessories(Constants.PROJECTION_ACCESSORY, null, null);
|
||||
case Constants.TRACK_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Tracks.");
|
||||
return mHandler.getAllTracks(Constants.PROJECTION_TRACK, null, null);
|
||||
case Constants.WHEELS_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Wheels.");
|
||||
return mHandler.getAllWheels(Constants.PROJECTION_WHEELS, null, null);
|
||||
default:
|
||||
Log.d(TAG, "query: UriMatcher returned: " + uriMatcher.match(uri));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delete(final Uri uri, final String selection, final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Uri insert(final Uri uri, final ContentValues values) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(final Uri uri, final ContentValues values, final String selection,
|
||||
final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector;
|
||||
|
||||
import android.content.ContentProvider;
|
||||
import android.content.ContentValues;
|
||||
import android.content.UriMatcher;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.Constants;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
|
||||
/**
|
||||
* Created by aldo7224 on 16.08.17.
|
||||
*/
|
||||
|
||||
public class WheelsContentProvider extends ContentProvider {
|
||||
|
||||
private static final String TAG = "WheelsProvider";
|
||||
public static final String PROVIDER_NAME
|
||||
= "com.de.aldo_apps.aldo.mariokartcircuitselector";
|
||||
|
||||
/**
|
||||
* A uri to do operations on cust_master table. A content provider is identified by its uri
|
||||
*/
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/wheels");
|
||||
|
||||
private static final UriMatcher uriMatcher;
|
||||
|
||||
static {
|
||||
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "characters", Constants.CHARACTER_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "tracks", Constants.TRACK_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "karts", Constants.KART_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "wheels", Constants.WHEELS_LOADER_ID);
|
||||
uriMatcher.addURI(PROVIDER_NAME, "accessories", Constants.ACCESSORY_LOADER_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* This content provider does the database operations by this object
|
||||
*/
|
||||
DatabaseHandler mHandler;
|
||||
|
||||
/**
|
||||
* A callback method which is invoked when the content provider is starting up
|
||||
*/
|
||||
@Override
|
||||
public boolean onCreate() {
|
||||
mHandler = new DatabaseHandler(getContext());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getType(final Uri uri) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* A callback method which is by the default content uri
|
||||
*/
|
||||
@Override
|
||||
public Cursor query(final Uri uri,
|
||||
final String[] projection,
|
||||
final String selection,
|
||||
final String[] selectionArgs,
|
||||
final String sortOrder) {
|
||||
Log.d(TAG, "query: Perform Query for [" + uri + "]");
|
||||
|
||||
final int resId = uriMatcher.match(uri);
|
||||
|
||||
switch (resId) {
|
||||
case Constants.CHARACTER_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Characters.");
|
||||
return mHandler.getAllCharacters(Constants.PROJECTION_CHARACTER, null, null);
|
||||
case Constants.KART_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Karts.");
|
||||
return mHandler.getAllKarts(Constants.PROJECTION_KART, null, null);
|
||||
case Constants.ACCESSORY_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Acessories.");
|
||||
return mHandler.getAllAccessories(Constants.PROJECTION_ACCESSORY, null, null);
|
||||
case Constants.TRACK_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Tracks.");
|
||||
return mHandler.getAllTracks(Constants.PROJECTION_TRACK, null, null);
|
||||
case Constants.WHEELS_LOADER_ID:
|
||||
Log.d(TAG, "query: Getting all Wheels.");
|
||||
return mHandler.getAllWheels(Constants.PROJECTION_WHEELS, null, null);
|
||||
default:
|
||||
Log.d(TAG, "query: UriMatcher returned: " + uriMatcher.match(uri));
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int delete(final Uri uri, final String selection, final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Uri insert(final Uri uri, final ContentValues values) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(final Uri uri, final ContentValues values, final String selection,
|
||||
final String[] selectionArgs) {
|
||||
// TODO Auto-generated method stub
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
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<Character> {
|
||||
|
||||
private ArrayList<Character> mList;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
private DatabaseHandler mHandler;
|
||||
|
||||
public CharacterListAdapter(final Context context, final ArrayList<Character> 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<Character> characters) {
|
||||
mList = characters;
|
||||
}
|
||||
|
||||
public void setDatabaseHandler(final DatabaseHandler handler) {
|
||||
mHandler = handler;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector.adapters;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.util.Log;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.Constants;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.PagerType;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.fragments.GenericListFragment;
|
||||
|
||||
public class CursorPagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
/**
|
||||
* default constructor.
|
||||
*/
|
||||
public CursorPagerAdapter(final FragmentManager fm) {
|
||||
super(fm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
final Bundle bundle = new Bundle();
|
||||
final String[] projection;
|
||||
final int loaderId;
|
||||
switch (PagerType.values()[position]) {
|
||||
case CHARACTER:
|
||||
projection = Constants.PROJECTION_CHARACTER;
|
||||
loaderId = Constants.CHARACTER_LOADER_ID;
|
||||
break;
|
||||
case KART:
|
||||
projection = Constants.PROJECTION_KART;
|
||||
loaderId = Constants.KART_LOADER_ID;
|
||||
break;
|
||||
case WHEEL:
|
||||
projection = Constants.PROJECTION_WHEELS;
|
||||
loaderId = Constants.WHEELS_LOADER_ID;
|
||||
break;
|
||||
case ACCESSORY:
|
||||
projection = Constants.PROJECTION_ACCESSORY;
|
||||
loaderId = Constants.ACCESSORY_LOADER_ID;
|
||||
break;
|
||||
case TRACK:
|
||||
projection = Constants.PROJECTION_TRACK;
|
||||
loaderId = Constants.TRACK_LOADER_ID;
|
||||
break;
|
||||
default:
|
||||
projection = null;
|
||||
loaderId = Constants.BASE_LOADER_ID;
|
||||
}
|
||||
|
||||
bundle.putStringArray("FOO", projection);
|
||||
bundle.putInt("BAR", loaderId);
|
||||
|
||||
Log.d("#####", "getItem: New GenericListFragment with loaderId = [" + loaderId
|
||||
+ "] and projection = [" + projection.toString() + "] on position ["
|
||||
+ position + "]");
|
||||
final GenericListFragment genericListFragment = new GenericListFragment();
|
||||
genericListFragment.setArguments(bundle);
|
||||
|
||||
return genericListFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
// TODO Auto-generated method stub
|
||||
return PagerType.values().length;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector.fragments;
|
||||
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ListFragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.CursorLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.widget.SimpleCursorAdapter;
|
||||
import android.util.Log;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.AccessoryContentProvider;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.CharacterContentProvider;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.Constants;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.KartContentProvider;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.TrackContentProvider;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.WheelsContentProvider;
|
||||
|
||||
/**
|
||||
* Created by aldo7224 on 16.08.17.
|
||||
*/
|
||||
|
||||
public class GenericListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
|
||||
|
||||
private SimpleCursorAdapter mCursorAdapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(final Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
|
||||
final Bundle bundle2 = getArguments();
|
||||
if (bundle2 != null) {
|
||||
final String[] projection = bundle2.getStringArray("FOO");
|
||||
final int loaderId = bundle2.getInt("BAR");
|
||||
Log.d("#####", "onCreate: New GenericListFragment with loaderId = [" + loaderId
|
||||
+ "] and projection = [" + projection.toString() + "]");
|
||||
final int[] values = new int[] {android.R.id.text1};
|
||||
mCursorAdapter = new SimpleCursorAdapter(getContext(),
|
||||
android.R.layout.simple_list_item_1,
|
||||
null, Constants.PROJECTION_TEST, values, 0);
|
||||
|
||||
setListAdapter(mCursorAdapter);
|
||||
|
||||
getLoaderManager().initLoader(loaderId, null, this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public CursorLoader onCreateLoader(int id, Bundle args) {
|
||||
Log.d("########", "onCreateLoader: Creating Loader for ID [" + id + "]");
|
||||
switch (id) {
|
||||
case Constants.CHARACTER_LOADER_ID:
|
||||
Log.d("####", "onCreateLoader: Creating character loader");
|
||||
return new CursorLoader(getContext(),
|
||||
CharacterContentProvider.CONTENT_URI,
|
||||
Constants.PROJECTION_CHARACTER, null, null, null);
|
||||
case Constants.KART_LOADER_ID:
|
||||
Log.d("####", "onCreateLoader: Creating kart loader");
|
||||
return new CursorLoader(getContext(),
|
||||
KartContentProvider.CONTENT_URI,
|
||||
Constants.PROJECTION_KART, null, null, null);
|
||||
case Constants.WHEELS_LOADER_ID:
|
||||
Log.d("####", "onCreateLoader: Creating kart loader");
|
||||
return new CursorLoader(getContext(),
|
||||
WheelsContentProvider.CONTENT_URI,
|
||||
Constants.PROJECTION_WHEELS, null, null, null);
|
||||
case Constants.ACCESSORY_LOADER_ID:
|
||||
Log.d("####", "onCreateLoader: Creating kart loader");
|
||||
return new CursorLoader(getContext(),
|
||||
AccessoryContentProvider.CONTENT_URI,
|
||||
Constants.PROJECTION_ACCESSORY, null, null, null);
|
||||
case Constants.TRACK_LOADER_ID:
|
||||
Log.d("####", "onCreateLoader: Creating kart loader");
|
||||
return new CursorLoader(getContext(),
|
||||
TrackContentProvider.CONTENT_URI,
|
||||
Constants.PROJECTION_TRACK, null, null, null);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader loader, Cursor cursor) {
|
||||
Log.d("#####", "onLoadFinished: Finished Loading for " + loader.getId());
|
||||
mCursorAdapter.swapCursor(cursor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader loader) {
|
||||
mCursorAdapter.swapCursor(null);
|
||||
}
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
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 LayoutInflater inflater,
|
||||
final DatabaseHandler databaseHandler,
|
||||
final Activity context,
|
||||
final FragmentManager fragmentManager) {
|
||||
mView = inflater.inflate(R.layout.pager_item, null, false);
|
||||
mHandler = databaseHandler;
|
||||
mContext = context;
|
||||
mFragmentManager = fragmentManager;
|
||||
mListView = (ListView) mView.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<? extends Object> objects) {
|
||||
if (objects.size() > 0) {
|
||||
final Object bufferTestObject = objects.get(0);
|
||||
if (bufferTestObject instanceof Character) {
|
||||
handleCharacterObject((ArrayList<Character>) objects);
|
||||
} else if (bufferTestObject instanceof Kart) {
|
||||
handleKartObject((ArrayList<Kart>) objects);
|
||||
} else if (bufferTestObject instanceof Track) {
|
||||
handleTrackObject((ArrayList<Track>) objects);
|
||||
} else if (bufferTestObject instanceof Accessory) {
|
||||
handleAccessoryObject((ArrayList<Accessory>) objects);
|
||||
} else if (bufferTestObject instanceof Wheels) {
|
||||
handleWheelsObject((ArrayList<Wheels>) objects);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleCharacterObject(final ArrayList<Character> characters) {
|
||||
final CharacterListAdapter adapter = new CharacterListAdapter(mContext, characters);
|
||||
adapter.setListOfItems(characters);
|
||||
adapter.setDatabaseHandler(mHandler);
|
||||
mListView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
private void handleKartObject(final ArrayList<Kart> karts) {
|
||||
|
||||
}
|
||||
|
||||
private void handleTrackObject(final ArrayList<Track> characters) {
|
||||
|
||||
}
|
||||
|
||||
private void handleAccessoryObject(final ArrayList<Accessory> accessories) {
|
||||
|
||||
}
|
||||
|
||||
private void handleWheelsObject(final ArrayList<Wheels> wheels) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,133 +0,0 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector.fragments;
|
||||
|
||||
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.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.R;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Accessory;
|
||||
|
||||
/**
|
||||
* The SingleAccessoryFragment which displays all information of a single accessory object. Also
|
||||
* this fragment handles the onClick. Based on the Click we will toggle the availability of this
|
||||
* object in the database.
|
||||
*
|
||||
* @author aldo7224
|
||||
* @version 0.1
|
||||
* @since 10.08.2017
|
||||
*/
|
||||
public class SingleAccessoryFragment extends Fragment {
|
||||
|
||||
/**
|
||||
* The Tag for Debugging Output.
|
||||
*/
|
||||
private static final String TAG = "SingleAccessoryFragment";
|
||||
|
||||
/**
|
||||
* Checkbox indicating the current availability status of the single accessory object.
|
||||
*/
|
||||
private CheckBox mAccessoryAvailable;
|
||||
|
||||
/**
|
||||
* TextView displaying the name of the single accessory object.
|
||||
*/
|
||||
private TextView mAccessoryName;
|
||||
|
||||
/**
|
||||
* The accessory object assigned to this fragment.
|
||||
*/
|
||||
private Accessory mAccessory;
|
||||
|
||||
/**
|
||||
* The Database handler passed from the activity to handle database operations.
|
||||
*/
|
||||
private DatabaseHandler mHandler;
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater,
|
||||
final ViewGroup container,
|
||||
final Bundle savedInstanceState) {
|
||||
// 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 (mAccessoryAvailable != null) {
|
||||
mAccessoryAvailable.toggle();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to initialize all View objects and toggle the visibility as we now know which
|
||||
* object should be passed into the fragment.
|
||||
*
|
||||
* @param view The Parent View.
|
||||
*/
|
||||
private void initViews(final View view) {
|
||||
mAccessoryAvailable = (CheckBox) view.findViewById(R.id.availability_checkbox);
|
||||
// Assign a CheckedChange Listener to the Checkbox, so we can update the status in the
|
||||
// database as well.
|
||||
mAccessoryAvailable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(final CompoundButton compoundButton,
|
||||
final boolean availability) {
|
||||
if (mHandler != null && mAccessory != null) {
|
||||
mHandler.changeAccessoryAvailability(mAccessory, availability);
|
||||
} else {
|
||||
Log.d(TAG, "onCheckedChanged: Either Handler or Accessory are null!");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Mark the Container as GONE.
|
||||
final View additionalInfoContainer = view.findViewById(R.id.multiple_information_container);
|
||||
additionalInfoContainer.setVisibility(View.GONE);
|
||||
|
||||
// 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());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method which sets the real texts/arguments to the view objects.
|
||||
*
|
||||
* @param accessory The Accessory object of which we will retrieve our texts/arguments.
|
||||
* @param handler The Database handler which handles the database operations.
|
||||
*/
|
||||
public void setArguments(final Accessory accessory, final DatabaseHandler handler) {
|
||||
mAccessory = accessory;
|
||||
mHandler = handler;
|
||||
if (mAccessoryAvailable != null) {
|
||||
mAccessoryAvailable.setChecked(accessory.getAvailable());
|
||||
}
|
||||
if (mAccessoryName != null) {
|
||||
mAccessoryName.setText(accessory.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,155 +0,0 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector.fragments;
|
||||
|
||||
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.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.R;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Character;
|
||||
|
||||
/**
|
||||
* The SingleCharacterFragment which displays all information of a single character object. Also
|
||||
* this fragment handles the onClick. Based on the Click we will toggle the availability of this
|
||||
* object in the database.
|
||||
*
|
||||
* @author aldo7224
|
||||
* @version 0.1
|
||||
* @since 10.08.2017
|
||||
*/
|
||||
public class SingleCharacterFragment {
|
||||
|
||||
/**
|
||||
* The Tag for Debugging Output.
|
||||
*/
|
||||
private static final String TAG = "SingleCharacterFragment";
|
||||
|
||||
/**
|
||||
* Checkbox indicating the current availability status of the single character object.
|
||||
*/
|
||||
private CheckBox mCharacterAvailable;
|
||||
|
||||
/**
|
||||
* TextView displaying the name of the single character object.
|
||||
*/
|
||||
private TextView mCharacterName;
|
||||
|
||||
/**
|
||||
* TextView displaying the package (Cup) of the single character object.
|
||||
*/
|
||||
private TextView mCharacterWeight;
|
||||
|
||||
/**
|
||||
* The character object assigned to this fragment.
|
||||
*/
|
||||
private Character mCharacter;
|
||||
|
||||
/**
|
||||
* The Database handler passed from the activity to handle database operations.
|
||||
*/
|
||||
private DatabaseHandler mHandler;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
Log.d(TAG, "onCreateView: Creating View");
|
||||
return inflater.inflate(R.layout.generic_list_item, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to initialize all View objects and toggle the visibility as we now know which
|
||||
* object should be passed into the fragment.
|
||||
*
|
||||
* @param view The Parent 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() {
|
||||
@Override
|
||||
public void onCheckedChanged(final CompoundButton compoundButton,
|
||||
final boolean availability) {
|
||||
if (mHandler != null && mCharacter != null) {
|
||||
mHandler.changeCharacterAvailability(mCharacter, availability);
|
||||
} else {
|
||||
Log.d(TAG, "onCheckedChanged: Either Handler or Character are null!");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Make the Container Visible.
|
||||
final View additionalInfoContainer = view.findViewById(R.id.multiple_information_container);
|
||||
additionalInfoContainer.setVisibility(View.VISIBLE);
|
||||
|
||||
// Initialize all single views and make them visible.
|
||||
mCharacterName = (TextView) view.findViewById(R.id.multi_view_name);
|
||||
mCharacterWeight = (TextView) view.findViewById(R.id.additional_info_first);
|
||||
mCharacterWeight.setVisibility(View.VISIBLE);
|
||||
final View separator = view.findViewById(R.id.additional_information_separator);
|
||||
separator.setVisibility(View.GONE);
|
||||
final View secondInfo = view.findViewById(R.id.additional_info_second);
|
||||
secondInfo.setVisibility(View.GONE);
|
||||
|
||||
// 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());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method which sets the real texts/arguments to the view objects.
|
||||
*
|
||||
* @param character The Character object of which we will retrieve our texts/arguments.
|
||||
* @param handler The Database handler which handles the database operations.
|
||||
*/
|
||||
public void setArguments(final Character character, final DatabaseHandler handler) {
|
||||
mCharacter = character;
|
||||
mHandler = handler;
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,161 +0,0 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector.fragments;
|
||||
|
||||
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.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.R;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Kart;
|
||||
|
||||
/**
|
||||
* The SingleKartFragment which displays all information of a single kart object. Also this fragment
|
||||
* handles the onClick. Based on the Click we will toggle the availability of this object in the
|
||||
* database.
|
||||
*
|
||||
* @author aldo7224
|
||||
* @version 0.1
|
||||
* @since 10.08.2017
|
||||
*/
|
||||
public class SingleKartFragment extends Fragment {
|
||||
|
||||
/**
|
||||
* The Tag for Debugging Output.
|
||||
*/
|
||||
private static final String TAG = "SingleKartFragment";
|
||||
|
||||
/**
|
||||
* Checkbox indicating the current availability status of the single kart object.
|
||||
*/
|
||||
private CheckBox mKartAvailable;
|
||||
|
||||
/**
|
||||
* TextView displaying the name of the single kart object.
|
||||
*/
|
||||
private TextView mKartName;
|
||||
|
||||
/**
|
||||
* TextView displaying the weight of the single kart object.
|
||||
*/
|
||||
private TextView mKartWeight;
|
||||
|
||||
/**
|
||||
* TextView displaying the dedicated Driver of the single kart object.
|
||||
*/
|
||||
private TextView mKartDedicatedDriver;
|
||||
|
||||
/**
|
||||
* The kart object assigned to this fragment.
|
||||
*/
|
||||
private Kart mKart;
|
||||
|
||||
/**
|
||||
* The Database handler passed from the activity to handle database operations.
|
||||
*/
|
||||
private DatabaseHandler mHandler;
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater,
|
||||
final ViewGroup container,
|
||||
final Bundle savedInstanceState) {
|
||||
// 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 (mKartAvailable != null) {
|
||||
mKartAvailable.toggle();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to initialize all View objects and toggle the visibility as we now know which
|
||||
* object should be passed into the fragment.
|
||||
*
|
||||
* @param view The Parent View.
|
||||
*/
|
||||
private void initViews(final View view) {
|
||||
mKartAvailable = (CheckBox) view.findViewById(R.id.availability_checkbox);
|
||||
// Assign a CheckedChange Listener to the Checkbox, so we can update the status in the
|
||||
// database as well.
|
||||
mKartAvailable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(final CompoundButton compoundButton,
|
||||
final boolean availability) {
|
||||
if (mHandler != null && mKart != null) {
|
||||
mHandler.changeKartAvailability(mKart, availability);
|
||||
} else {
|
||||
Log.d(TAG, "onCheckedChanged: Either Handler or Kart are null!");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Make the Container Visible.
|
||||
final View additionalInfoContainer = view.findViewById(R.id.multiple_information_container);
|
||||
additionalInfoContainer.setVisibility(View.VISIBLE);
|
||||
|
||||
// Initialize all single views and make them visible.
|
||||
mKartName = (TextView) view.findViewById(R.id.multi_view_name);
|
||||
mKartWeight = (TextView) view.findViewById(R.id.additional_info_first);
|
||||
mKartWeight.setVisibility(View.VISIBLE);
|
||||
final View separator = view.findViewById(R.id.additional_information_separator);
|
||||
separator.setVisibility(View.VISIBLE);
|
||||
mKartDedicatedDriver = (TextView) view.findViewById(R.id.additional_info_second);
|
||||
mKartDedicatedDriver.setVisibility(View.VISIBLE);
|
||||
|
||||
// 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.
|
||||
*/
|
||||
public void setArguments(final Kart kart, final DatabaseHandler handler) {
|
||||
mKart = kart;
|
||||
mHandler = handler;
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,160 +0,0 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector.fragments;
|
||||
|
||||
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.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.R;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Track;
|
||||
|
||||
/**
|
||||
* The SingleTrackFragment which displays all information of a single track object. Also this
|
||||
* fragment handles the onClick. Based on the Click we will toggle the availability of this object
|
||||
* in the database.
|
||||
*
|
||||
* @author aldo7224
|
||||
* @version 0.1
|
||||
* @since 10.08.2017
|
||||
*/
|
||||
public class SingleTrackFragment extends Fragment {
|
||||
|
||||
/**
|
||||
* The Tag for Debugging Output.
|
||||
*/
|
||||
private static final String TAG = "SingleTrackFragment";
|
||||
|
||||
/**
|
||||
* Checkbox indicating the current availability status of the single track object.
|
||||
*/
|
||||
private CheckBox mTrackAvailable;
|
||||
|
||||
/**
|
||||
* TextView displaying the name of the single track object.
|
||||
*/
|
||||
private TextView mTrackName;
|
||||
|
||||
/**
|
||||
* TextView displaying the package (Cup) of the single track object.
|
||||
*/
|
||||
private TextView mTrackPackage;
|
||||
|
||||
/**
|
||||
* TextView displaying the number of the single track object.
|
||||
*/
|
||||
private TextView mTrackNumber;
|
||||
|
||||
/**
|
||||
* The track object assigned to this fragment.
|
||||
*/
|
||||
private Track mTrack;
|
||||
|
||||
/**
|
||||
* The Database handler passed from the activity to handle database operations.
|
||||
*/
|
||||
private DatabaseHandler mHandler;
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater,
|
||||
final ViewGroup container,
|
||||
final Bundle savedInstanceState) {
|
||||
// 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 (mTrackAvailable != null) {
|
||||
mTrackAvailable.toggle();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to initialize all View objects and toggle the visibility as we now know which
|
||||
* object should be passed into the fragment.
|
||||
*
|
||||
* @param view The Parent View.
|
||||
*/
|
||||
private void initViews(final View view) {
|
||||
mTrackAvailable = (CheckBox) view.findViewById(R.id.availability_checkbox);
|
||||
// Assign a CheckedChange Listener to the Checkbox, so we can update the status in the
|
||||
// database as well.
|
||||
mTrackAvailable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(final CompoundButton compoundButton,
|
||||
final boolean availability) {
|
||||
if (mHandler != null && mTrack != null) {
|
||||
mHandler.changeTrackAvailability(mTrack, availability);
|
||||
} else {
|
||||
Log.d(TAG, "onCheckedChanged: Either Handler or Track are null!");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Make the Container Visible.
|
||||
final View additionalInfoContainer = view.findViewById(R.id.multiple_information_container);
|
||||
additionalInfoContainer.setVisibility(View.VISIBLE);
|
||||
|
||||
// Initialize all single views and make them visible.
|
||||
mTrackName = (TextView) view.findViewById(R.id.multi_view_name);
|
||||
mTrackPackage = (TextView) view.findViewById(R.id.additional_info_first);
|
||||
mTrackPackage.setVisibility(View.VISIBLE);
|
||||
final View separator = view.findViewById(R.id.additional_information_separator);
|
||||
separator.setVisibility(View.VISIBLE);
|
||||
mTrackNumber = (TextView) view.findViewById(R.id.additional_info_second);
|
||||
mTrackNumber.setVisibility(View.VISIBLE);
|
||||
|
||||
// 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.
|
||||
*/
|
||||
public void setArguments(final Track track, final DatabaseHandler handler) {
|
||||
mTrack = track;
|
||||
mHandler = handler;
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,134 +0,0 @@
|
||||
package com.de.aldo_apps.aldo.mariokartcircuitselector.fragments;
|
||||
|
||||
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.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.DatabaseHandler;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.R;
|
||||
import com.de.aldo_apps.aldo.mariokartcircuitselector.database_models.Wheels;
|
||||
|
||||
/**
|
||||
* The SingleWheelsFragment which displays all information of a single wheels object. Also this
|
||||
* fragment handles the onClick. Based on the Click we will toggle the availability of this object
|
||||
* in the database.
|
||||
*
|
||||
* @author aldo7224
|
||||
* @version 0.1
|
||||
* @since 10.08.2017
|
||||
*/
|
||||
public class SingleWheelsFragment extends Fragment {
|
||||
|
||||
/**
|
||||
* The Tag for Debugging Output.
|
||||
*/
|
||||
private static final String TAG = "SingleWheelsFragment";
|
||||
|
||||
/**
|
||||
* Checkbox indicating the current availability status of the single wheels object.
|
||||
*/
|
||||
private CheckBox mWheelsAvailable;
|
||||
|
||||
/**
|
||||
* TextView displaying the name of the single wheels object.
|
||||
*/
|
||||
private TextView mWheelsName;
|
||||
|
||||
/**
|
||||
* The wheels object assigned to this fragment.
|
||||
*/
|
||||
private Wheels mWheels;
|
||||
|
||||
/**
|
||||
* The Database handler passed from the activity to handle database operations.
|
||||
*/
|
||||
private DatabaseHandler mHandler;
|
||||
|
||||
@Override
|
||||
public View onCreateView(final LayoutInflater inflater,
|
||||
final ViewGroup container,
|
||||
final Bundle savedInstanceState) {
|
||||
// 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 (mWheelsAvailable != null) {
|
||||
mWheelsAvailable.toggle();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to initialize all View objects and toggle the visibility as we now know which
|
||||
* object should be passed into the fragment.
|
||||
*
|
||||
* @param view The Parent View.
|
||||
*/
|
||||
private void initViews(final View view) {
|
||||
mWheelsAvailable = (CheckBox) view.findViewById(R.id.availability_checkbox);
|
||||
// Assign a CheckedChange Listener to the Checkbox, so we can update the status in the
|
||||
// database as well.
|
||||
mWheelsAvailable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(final CompoundButton compoundButton,
|
||||
final boolean availability) {
|
||||
if (mHandler != null && mWheels != null) {
|
||||
mHandler.changeWheelsAvailability(mWheels, availability);
|
||||
} else {
|
||||
Log.d(TAG, "onCheckedChanged: Either Handler or Wheels are null!");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Mark the Container as GONE.
|
||||
final View additionalInfoContainer = view.findViewById(R.id.multiple_information_container);
|
||||
additionalInfoContainer.setVisibility(View.GONE);
|
||||
|
||||
// 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.
|
||||
*/
|
||||
public void setArguments(final Wheels wheels, final DatabaseHandler handler) {
|
||||
mWheels = wheels;
|
||||
mHandler = handler;
|
||||
if (mWheelsAvailable != null) {
|
||||
mWheelsAvailable.setChecked(wheels.getAvailable());
|
||||
}
|
||||
if (mWheelsName != null) {
|
||||
mWheelsName.setText(wheels.getName());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context="com.de.aldo_apps.aldo.mariokartcircuitselector.GameSelection">
|
||||
tools:context="com.de.aldo_apps.aldo.mariokartcircuitselector.GameSelection"
|
||||
>
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
android:id="@+id/vp_horizontal_ntb"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"/>
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/ntb_vertical"/>
|
||||
|
||||
<devlight.io.library.ntb.NavigationTabBar
|
||||
app:ntb_title_mode="all"
|
||||
@@ -20,6 +20,7 @@
|
||||
android:id="@+id/ntb_vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
app:ntb_preview_colors="@array/vertical_ntb"/>
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
Reference in New Issue
Block a user