У меня проблема с Android Spinner. В своем приложении я создал два Spinner на основном макете. "Штат" Spinner и "Район" Spinner. Все данные на Spinner хранятся в базе данных SQLite. Я хочу отобразить список «Район» на втором счетчике в зависимости от выбора конкретного «состояния» в первом счетчике.
Пример: Предположим, что когда я выбираю Karnataka в первом вращателе, приложение сначала извлекает весь район из базы данных SQLite, связанный с состоянием karnataka, а затем отображает его во втором Spinner.
Для этого я правильно выполняю все операции с базой данных, что означает создание двух таблиц 'штат' и 'район', в которых один столбец в таблице районов является внешним ключом, который ссылается на один из первичных ключей 'таблицы состояний'
db.execSQL("create table "+STATE_TABLE+" ("+
STATE_ID+" integer primary key autoincrement not null, "+
STATE_NAME+" text"+")");
db.execSQL("create table "+DISTRICT_TABLE+" ("+DISTRICT_ID+
" integer primary key autoincrement not null,"+DISTRICT_NAME
+" text,"+STATE_ID+" integer, FOREIGN KEY("
+STATE_ID+") REFERENCES "+STATE_TABLE
+"("+STATE_ID+")"+")");
Сейчас в классе деятельности:
spinnerState = (Spinner)findViewById(R.id.spinner1);
spinnerDistrict = (Spinner)findViewById(R.id.spinner2);
stateList = new ArrayList<String>();
districtList = new ArrayList<String>();
Предположим, что все данные уже готовы к хранению в базе данных.
Теперь мне нужно извлечь все данные 'State' из базы данных и добавить их в список состояний ArrayList.
Cursor stateCursor = database.query(STATE_TABLE, new String[]{STATE_ID, STATE_NAME},
null, null, null, null, STATE_NAME);
stateCursor.moveToFirst();
if(! stateCursor.isAfterLast()){
do{
int id = stateCursor.getInt(0);
String stateName = stateCursor.getString(1);
stateList.add(stateName);
}while(stateCursor.moveToNext());
}
stateCursor.close();
после этого я создаю один ArrayAdapter и помещаю в него этот список состояний.
spinnerState.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, stateList));
Затем я поместил следующий код в класс деятельности:
spinnerState.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View v,
int pos, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Теперь моя проблема здесь:
- Как получить StateId для выполнения запроса на выборку для включения в базу данных всего района, связанного с конкретным состоянием.
- Как будет генерироваться адаптер для округа.
- где я положил все эти коды.
Вот что мне нужно, чтобы создать districtList после получения значения из состояния Spinner.
Подобный вопрос, который задавали ранее на этом сайте, что они делают:
они уже создают два адаптера для двух счетчиков, а затем применяют setOnItemSelectedListener.
Пожалуйста, помогите мне, потому что здесь мой ум полностью перестает работать.
Я ссылаюсь на множество книг и веб-сайтов, но они даже не упоминают о подобных проблемах.