Как заставить представление перерисовываться непосредственно перед выполнением следующей строки кода

У меня есть LinearLayout, который я хотел бы изменить цвет фона, когда щелкает один из его дочерних видов (ImageButton). Я могу сделать это, но не сразу - изменения не произойдут на экране до позднего времени (я думаю, что во время вызова onResume). Я хотел бы узнать, как заставить макет перерисовываться после установки фона, прежде чем будет выполнена следующая строка кода. Вот метод onClick моего OnClickListener для кнопки:

public void onClick(View v) {

  LinearLayout parentLayout = (LinearLayout) v.getParent();
  parentLayout.setBackgroundResource(R.color.my_color);
  SystemClock.sleep(1000); //ms

}

Команда сна находится там, чтобы проверить, происходит ли перерисовка до или после нее. Результат: после. Большинство вопросов по этой теме (например,Вот а такжеВот) скажем использовать invalidate () в представлении. Я использовал командыparentLayout.invalidate();, parentLayout.postInvalidate();, а такжеparentLayout.refreshDrawableState(); между фоном и линиями сна все безрезультатно. Перерисовка все еще происходит после команды сна. Может кто-нибудь сказать мне, как сделать это немедленно?

Другая, возможно полезная информация: LinearLayout привязан к строкам ListView, а описанный выше OnClickListener находится в пользовательском классе, который расширяет SimpleCursorAdapter, а не в самом действии. (Таким образом, я могу установить прослушиватель для каждой строки в ListView.)

Ответы на вопрос(3)

Ваш ответ на вопрос