I want my first spinner as category and the second one is category . Whenever a category is choosed only relevant sub-categories will be shown on 2nd spinner.This is my Activity class.
public class AndroidActivity extends Activity {
Spinner mSpinnerModel, mSpinnerYear, mSpinnerMake;
Button mButtonShow;
TextView mTextViewResult;
String selectedOption;
String selectedModel = "";
String selectedMake = "";
String selectedYear = "";
SQLiteDatabase mSqLiteDatabase;
List<String> models = new ArrayList<String>();
List<String> makes = new ArrayList<String>();
List<String> years = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.android_fragment);
final DatabaseClient dbClient = new DatabaseClient(AndroidActivity.this);
mSqLiteDatabase = dbClient.getReadableDatabase();
fetchDataFromDBForSpinners(mSqLiteDatabase);
mSpinnerModel = (Spinner) findViewById(R.id.spinnerModel);
mSpinnerYear = (Spinner) findViewById(R.id.spinnerYear);
mSpinnerMake = (Spinner) findViewById(R.id.spinnerMake);
mButtonShow = (Button) findViewById(R.id.buttonShow);
mTextViewResult = (TextView) findViewById(R.id.textViewResult);
ArrayAdapter<String> yearAdapter = new ArrayAdapter<String>(AndroidActivity.this, android.R.layout.simple_spinner_item, years);
yearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinnerYear.setAdapter(yearAdapter);
mSpinnerModel.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (selectedModel.equals("CAR_MODELS")) {
Collections.addAll(models,selectedModel);
ArrayAdapter<String> modelAdapter = new ArrayAdapter<String>(AndroidActivity.this, android.R.layout.simple_spinner_item, models);
modelAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
modelAdapter.notifyDataSetChanged();
mSpinnerMake.setAdapter(modelAdapter);
ArrayAdapter<String> makeAdapter = new ArrayAdapter<String>(AndroidActivity.this, android.R.layout.simple_spinner_item, makes);
makeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mSpinnerYear.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedYear = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(parent.getContext(), "Selected Year: " + selectedYear, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mButtonShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String eligibleBattery=fetchEligibleBattery(mSqLiteDatabase);
mTextViewResult.setText(eligibleBattery);
}
});
}
private String fetchEligibleBattery(SQLiteDatabase db) {
String battery="";
String SELECT_BATTERY_QUERY = "SELECT "+ DatabaseConstant.KEY_CAR_BATTERY+" FROM " + DatabaseConstant.TABLE_CAR_DETAILS + " WHERE " + DatabaseConstant.KEY_CAR_MAKE + " ='" +selectedMake +
"' AND "+ DatabaseConstant.KEY_CAR_MODEL +" = '"+ selectedModel+ "' AND "+ DatabaseConstant.KEY_CAR_YEAR+"= '"+selectedYear +"' ;";
Log.d("Database", "Battery Select Query : " + SELECT_BATTERY_QUERY);
Cursor cursor = db.rawQuery(SELECT_BATTERY_QUERY, null);
try {
if (cursor.moveToFirst()) {
battery=cursor.getString(cursor.getColumnIndex(DatabaseConstant.KEY_CAR_BATTERY));
}
} catch (Exception e) {
Log.d("Database", "Error while trying to get icons from database");
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
return battery;
}
public void fetchDataFromDBForSpinners(SQLiteDatabase db) {
String SELECT_MODELS_QUERY = "SELECT * FROM " + DatabaseConstant.TABLE_CAR_DETAILS + ";";
String model, make, year;
Cursor cursor = db.rawQuery(SELECT_MODELS_QUERY, null);
try {
if (cursor.moveToFirst()) {
do {
model = cursor.getString(cursor.getColumnIndex(DatabaseConstant.KEY_CAR_MODEL));
make = cursor.getString(cursor.getColumnIndex(DatabaseConstant.KEY_CAR_MAKE));
year = cursor.getString(cursor.getColumnIndex(DatabaseConstant.KEY_CAR_YEAR));
models.add(model);
makes.add(make);
years.add(year);
} while (cursor.moveToNext());
}
} catch (Exception e) {
Log.d("DATABASE", "Error while trying to get events from database");
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
}}
And this is my DBclass.
public class DatabaseClient extends SQLiteOpenHelper {
public DatabaseClient(Context context) {
super(context, DatabaseConstant.DATABASE_NAME, null, DatabaseConstant.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
createTables(db);
insertDataInCarTable(db);
insertDataIntruckTable(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + DatabaseConstant.TABLE_CAR_DETAILS + " ;");
db.execSQL("DROP TABLE IF EXISTS" + DatabaseConstant.TABLE_TRUCK_DETAILS + " ;");
onCreate(db);
}
private void createTables(SQLiteDatabase db) {
String CREATE_TABLE_CAR_DETAILS = " CREATE TABLE " + DatabaseConstant.TABLE_CAR_DETAILS +
" ( " +
DatabaseConstant.KEY_ENTRY_ID + " INTEGER NOT NULL, " + //define primary key
DatabaseConstant.KEY_CAR_MODEL + " TEXT, " +
DatabaseConstant.KEY_CAR_MAKE + " TEXT, " +
DatabaseConstant.KEY_CAR_YEAR + " TEXT, " +
DatabaseConstant.KEY_CAR_BATTERY + " TEXT, " +
" PRIMARY KEY ( " + DatabaseConstant.KEY_ENTRY_ID + " ));";
Log.d("Db Create Query", CREATE_TABLE_CAR_DETAILS);
db.execSQL(CREATE_TABLE_CAR_DETAILS);
String CREATE_TABLE_TRUCK_DETAILS = "CREATE TABLE " +DatabaseConstant.TABLE_TRUCK_DETAILS+
" ( "+
DatabaseConstant.KEY_tENTRY_ID+" INTEGER NOT NULL, "+
DatabaseConstant.KEY_TRUCK_MODEL+" TEXT, "+
DatabaseConstant.KEY_TRUCK_MAKE+" TEXT, "+
DatabaseConstant.KEY_TRUCK_YEAR+" TEXT, "+
DatabaseConstant.KEY_TRUCK_BATTERY+" TEXT, "+
" PRIMARY KEY ( "+ DatabaseConstant.KEY_tENTRY_ID+" ));";
Log.d("Db Create Query", CREATE_TABLE_TRUCK_DETAILS);
db.execSQL(CREATE_TABLE_TRUCK_DETAILS);
}
private void insertDataInCarTable(SQLiteDatabase db) {
String[] CAR_MODELS = {"College1","College2","College3"};
String[] CAR_MAKES = {"make1", "make2", "make3", "make4", "make5","make6","make7","make8"};
String[] CAR_YEARS = {"year1", "year2", "year3", "year4", "year5", "year6", "year7"};
String[] CAR_BATTERY = {"Battery1", "Battery2", "Battery3", "Battery4", "Battery1-200", "Battery1-11", "LION-Battery1", "Battery1-EE", "Battery1-90"};
db.beginTransaction();
try {
for (int i = 0; i < CAR_MODELS.length && i < CAR_MAKES.length && i < CAR_YEARS.length && i < CAR_BATTERY.length; i++) {
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseConstant.KEY_ENTRY_ID, i + 1);
contentValues.put(DatabaseConstant.KEY_CAR_MODEL, CAR_MODELS[i]);
contentValues.put(DatabaseConstant.KEY_CAR_MAKE, CAR_MAKES[i]);
contentValues.put(DatabaseConstant.KEY_CAR_YEAR, CAR_YEARS[i]);
contentValues.put(DatabaseConstant.KEY_CAR_BATTERY, CAR_BATTERY[i]);
db.insertOrThrow(DatabaseConstant.TABLE_CAR_DETAILS, null, contentValues);
}
db.setTransactionSuccessful();
} catch (Exception e) {
Log.d("DATABASE", "ERROR while trying to add better the dtabse");
} finally {
db.endTransaction();
}
}
private void insertDataIntruckTable(SQLiteDatabase db){
String[] TRUCK_MODELS = {"tmodel1", "tmodel3", "tmodel4", "tmodel2", "tmodel5", "tmodel1 C2E", "tmodel1 E SERIES", "tmodel1 CC"};
String[] TRUCK_MAKES = {"make1", "make2", "make3", "make4", "make5"};
String[] TRUCK_YEARS = {"1957", "2009", "2015", "2003", "2011", "2000", "2002"};
String[] TRUCK_BATTERY = {"RTEK1", "RTEK2", "RTEK3", "RTEK4", "LION-200", "LION-11", "LION-211", "LION-EE", "LION-90"};
db.beginTransaction();
try{
for(int i =0;i<TRUCK_MODELS.length&&i<TRUCK_MAKES.length&&i<TRUCK_YEARS.length&&i<TRUCK_BATTERY.length;i++){
ContentValues contentValues = new ContentValues();
contentValues.put(DatabaseConstant.KEY_tENTRY_ID,i+1);
contentValues.put(DatabaseConstant.KEY_CAR_MODEL,TRUCK_MODELS[i]);
contentValues.put(DatabaseConstant.KEY_TRUCK_MAKE,TRUCK_MAKES[i]);
contentValues.put(DatabaseConstant.KEY_TRUCK_YEAR,TRUCK_YEARS[i]);
contentValues.put(DatabaseConstant.KEY_TRUCK_BATTERY,TRUCK_BATTERY[i]);
db.insertOrThrow(DatabaseConstant.TABLE_TRUCK_DETAILS,null,contentValues);
}
db.setTransactionSuccessful();
}catch (Exception e){
Log.d("DATABASE", "ERROR WHile trying to add bettER the database");
}finally {
db.endTransaction();
}
}
what should i do to make first spinner act like category and 2nd spinner like sub-category
Aucun commentaire:
Enregistrer un commentaire