В этом приложении должно быть четыре или более связанных счетчика, которые должны перезагружаться при изменении выбора их «родительского счетчика» - например, с двумя счетчиками: домами и комнатами - если вы выбираете дом, счетчик комнат должен перезагрузиться изsqlite database.
Я испробовал два подхода: класс MySpinner, который принимает «дочерний» Spinner в своем конструкторе и говорит дочернему элементу обновлять себя при запуске OnSelectedItem, например,
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
if (MySpinner.this.mChild.equals(null) == false) {
MySpinner.this.mChild.updateData((int)id);
}
}
updateData ребенка -
public void updateData (int parentValue) {
new backgroundTask().execute("create");
}
, какие фоновые задачи являются AsyncTask для запроса базы данных sqlite:
@Override
protected Void doInBackground(String... params) {
Db = new MyDatabase(mContext);
Db.open();
if(params[0] == "create") {
if (mTable.equals("T_room")){
mCursor = mDb.getRooms(mParentValue);
}
}
return null;
}
Мой второй подход заключается в создании всех моих счетчиков непосредственно в упражнении.Java-файл.Этот второй подход позволяет мне реализовать один AsyncTask для всех 4 или более счетчиков и выбирать, что запрашивать из БД, основываясь на том, кто с каким значением вызывает.
Первый подход дает сбой только в «реальной» строке кода.в асинхронной задаче второй подход сводит меня с ума из-за автонастройки счетчиков и беспорядка ifs в асинхронной задаче.
Я ни в коем случае не кодер, и мне интересно, может ли кто-то хорошо разбираться в объектно-ориентированном кодированиипросветите меня относительно того, что было бы хорошим поведением кодирования для решения моей конкретной проблемы (несколько блесен, которые обновляют друг друга при выборе.)