Родственные прядильщики

1

Это приложение должно иметь четыре или более связанных прядильщика, которые должны перезаряжаться, когда изменяется их выбор родительского "счетчика", в качестве примера с двумя прядильщиками: домами и комнатами - если вы выберете дом, заклинатель комнаты должен перезарядиться с база данных sqlite.

Я пробовал два подхода: класс 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​​p >

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;
}

Мой второй подход заключался в создании всех моих прядильщиков непосредственно в файле activity.java. Этот второй подход предусматривает, что я реализую одну AsyncTask для всех 4 или более прядильщиков и выбираю, что нужно запрашивать из db, исходя из того, кто вызывает с каким значением.

Первый подход падает на единственную "реальную" строку кода в асинтете, второй подход заставляет меня сходить с ума от автозапускающих прядильщиков и беспорядка ifs в асинтете.

Я не кодер каким-либо образом, и задаюсь вопросом, может ли кто-нибудь, хорошо разбирающийся в ориентированном кодировании object-, просветить меня относительно того, что будет хорошим кодовым поведением для решения моей конкретной проблемы (несколько прядильщиков, которые обновляют друг друга при выборе.)

Теги:
spinner

1 ответ

0

Это интересно, в данный момент я делаю что-то подобное. Просто сохраните ссылку на адаптер, а внутри onItemSelected получите доступ к объекту с помощью adapter.getItem(pos). Затем вы можете использовать этот объект для обновления второго адаптера-счетчика. Просто позаботьтесь о потоке пользовательского интерфейса. Я хотел бы сделать это более чистым способом, но я не знаю, как это сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню