Я работал над Cal Poly lab3 (http://sites.google.com/site/androidappcourse/labs/lab-3), и все работало как надо, пока я не пришел к реализации проверяемого интерфейса для развертывания и свертывания элементов. Затем мне показалось, что моя логика была правильной (потому что текст кнопки расширения все еще менялсякак и должно быть) - но раскладка не была перерисована должным образом - как будто она была свернута, когда ее нужно было развернуть и выглядела сломанной.
Поработав немного с логированием, я обнаружил, что каждый раз, когда я нажимаю на любуюМетод setChecked () item вызывается два раза для каждого элемента за очень короткий промежуток времени - что портится с рисунком. Сначала со старыми данными выбора, а затем с новыми.
Более тогоЛюбопытно, что мне удалось исправить проблему, установив, что setChecked () срабатывает только каждый раз:
public void setChecked(boolean checked)
{
counter++;
if (counter%2==0)
{
if(checked) expandJokeView();
else collapseJokeView();
}
Log.d("SimpleJokeListLog", "SetChecked"+" "+checked+" "+counter+" "+m_joke.toString());
}
И вот как это выглядит в catlog: я запускаю действие, которое отображает список с элементами вмой пользовательский JokeView, реализующий checkable
12-18 02:58:16.598: D/SimpleJokeListLog(742): SetChecked false 1 A small
12-18 02:58:16.628: D/SimpleJokeListLog(742): SetChecked false 1 Cartoonist
12-18 02:58:16.648: D/SimpleJokeListLog(742): SetChecked false 1 I wonde
12-18 02:58:16.728: D/SimpleJokeListLog(742): SetChecked false 2 A small
12-18 02:58:16.748: D/SimpleJokeListLog(742): SetChecked false 2 Cartoonist
12-18 02:58:16.748: D/SimpleJokeListLog(742): SetChecked false 2 I wondere
Я выбираю первый элемент (маленькийl ...)
12-18 02:59:17.628: D/SimpleJokeListLog(742): SetChecked false 3 A small
12-18 02:59:17.628: D/SimpleJokeListLog(742): SetChecked false 3 Cartoonis
12-18 02:59:17.628: D/SimpleJokeListLog(742): SetChecked false 3 I wondere
12-18 02:59:17.838: D/SimpleJokeListLog(742): SetChecked true 4 A small boy
12-18 02:59:17.847: D/SimpleJokeListLog(742): SetChecked false 4 Cartoonist
12-18 02:59:17.858: D/SimpleJokeListLog(742): SetChecked false 4 I wondered
Я выбираю второй
12-18 02:59:24.768: D/SimpleJokeListLog(742): SetChecked true 5 A small boy
12-18 02:59:24.768: D/SimpleJokeListLog(742): SetChecked false 5 Cartoonist
12-18 02:59:24.768: D/SimpleJokeListLog(742): SetChecked false 5 I wondered w
12-18 02:59:24.968: D/SimpleJokeListLog(742): SetChecked false 6 A small
12-18 02:59:24.968: D/SimpleJokeListLog(742): SetChecked true 6 Cartooni
12-18 02:59:24.978: D/SimpleJokeListLog(742): SetChecked false 6 I wonde
Третий
12-18 02:59:27.828: D/SimpleJokeListLog(742): SetChecked false 7 A small
12-18 02:59:27.838: D/SimpleJokeListLog(742): SetChecked true 7 Cartoonis
12-18 02:59:27.838: D/SimpleJokeListLog(742): SetChecked false 7 I wonder
12-18 02:59:28.048: D/SimpleJokeListLog(742): SetChecked false 8 A small
12-18 02:59:28.058: D/SimpleJokeListLog(742): SetChecked false 8 Cartooni
12-18 02:59:28.068: D/SimpleJokeListLog(742): SetChecked true 8 I wondered
Снова третий (даже на этот раз без этого счетчиканеправильно рисует):
12-18 02:59:31.197: D/SimpleJokeListLog(742): SetChecked false 9 A small b
12-18 02:59:31.197: D/SimpleJokeListLog(742): SetChecked false 9 Cartoonist
12-18 02:59:31.197: D/SimpleJokeListLog(742): SetChecked true 9 I wondered
12-18 02:59:31.417: D/SimpleJokeListLog(742): SetChecked false 10 A small bo
12-18 02:59:31.417: D/SimpleJokeListLog(742): SetChecked false 10 Cartoonist f
12-18 02:59:31.427: D/SimpleJokeListLog(742): SetChecked true 10 I wondered why