Каскадные блесны в android
Привет Друзья,
Я не знаком с разработкой android,и я столкнулся с ситуацией каскадного выпадающего списка на основе выбора первого прядильщика.то есть,рассмотрим для примера в 1-м прядильщике все данные состояний загружаются из веб-сервиса с помощью вспомогательного класса db при выборе имени состояния в 1-м прядильщике мне нужно заполнить 2-й прядильщик на основе идентификатора выбранного элемента 1-го прядильщика(stateid не тот идентификатор выбранного элемента spinner) из БД, что означает, что мне нужно выбрать stateid из выбранного состояния и хочу отфильтровать районы на основе состояний.
Создание таблицы состояний:
CREATE TABLE States( StateID INTEGER , StateName VARCHAR)
Создание таблицы округов:
CREATE TABLE Branches(_ID INTEGER PRIMAY KEY,DistrictName VARCHAR,StateID INTEGER)
В этом случае я использовал для загрузки данных для состояний с помощью arraylist и on spinner1.setOnItemSelectedListener функция загрузила значения района, но значения загружаются в соответствии с положением элементов в счетчике состояний, а не то, что мне нужно фильтровать на основе stateid в таблице ветвей.
Это код для получения всех состояний:
public ArrayList<HashMap<String, String>> getStatesData() { ArrayList aList = new ArrayList(); try { Log.e("getStatesData", "Started"); String selectQuery = "SELECT * FROM States"; SQLiteDatabase database = this.getWritableDatabase(); Cursor cursor = database.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { HashMap<String, String> map = new HashMap<String, String>(); map.put("StateID", cursor.getString(cursor.getColumnIndex("StateID"))); map.put("StateName", cursor.getString(cursor .getColumnIndex("StateName"))); aList.add(map); } while (cursor.moveToNext()); } cursor.close(); return aList; } catch (Exception e) { e.printStackTrace(); Log.e("getStatesData", "Ended"); return aList; } }
spinner1.setonitemselectedlistner событие:
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapt, View v, int pos, long id) { // TODO Auto-generated method stub long spinstate=spinner_state.getSelectedItemId(); branch_values=sDBController.getStateselectidData(spinstate); branch_name_ary.clear(); for (int i = 0; i < branch_values.size(); i++) { String name=branch_values.get(i).get("DistrictName"); String id=branch_values.get(i).get("StateID"); branch_name_ary.add(name); Log.e("branchesbystates", branch_name_ary.toString()); } ArrayAdapter<String> spinnerArrayAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, branch_name_ary); spinnerArrayAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner_district.setAdapter(spinnerArrayAdapter1); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } });
Пожалуйста, предложите какое-то решение, чтобы получить районы на основе stateid, которое может помочь получить представление о решении этой проблемы.
Заранее спасибо.