Программный вызов метода против пользовательского вызова через пользовательский интерфейс - как справиться с обоими, когда приложение должно знать разницу? - PullRequest
2 голосов
/ 02 декабря 2010

У меня есть два счетчика, счетчик A и счетчик B. Когда пользователь меняет A, B обновляется полным новым набором данных. Я также реализовал обратный вызов для B, чтобы использовать setOnItemSelectedListener, чтобы я мог изменять некоторые объекты в другом классе всякий раз, когда B изменяется пользователем.

B.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        mComponentColor.setSelection(position);
        mCompColorAsBuilt[mComponent.getComponentSelection()] = position;
        setColor();     
    }
});

Проблема, с которой я столкнулся, заключается в том, что я действительно не хочу, чтобы эти объекты менялись, если только пользователь не изменил счетчик. Поскольку я автоматически заполняю B на основе выбора A, обратный вызов B вызывается при изменении пользователем A.

Есть мысли, как мне справиться с этой ситуацией?

1 Ответ

0 голосов
/ 05 декабря 2010

В основном я решил эту проблему, используя метод, аналогичный методу flags, упомянутому выше, но сделал это внутри объекта, который корректируется при вызове методов onClickListener.

По сути, вспоминая, каково последнее состояние счетчика, я проверяю, прежде чем настраивать какие-либо объекты внутри него. Если состояние одинаковое, ничего не меняется. К счастью, все настройки объекта были выполнены другим классом, что сделало его относительно простым в обращении. Я не слишком доволен этим, но думаю, что в конечном итоге это было лучше, чем использование флагов в классе деятельности.

Спасибо тем, кто внес свой вклад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...