Android ViewAnimator / ViewFlipper / ViewSwitcher и жестко закодированное значение для setDisplayedChild

Я собираюсь работать с одним из:

  • ViewAnimator
  • ViewFlipper
  • ViewSwitcher

У всех из них есть метод setDisplayedChild чтобы изменить представление от одного к другому.

Только аргумент этого метода – int whichChild – число просмотров в очереди просмотра.

Можно ли работать с любыми нефиксированными номерами?

Я хочу иметь возможность позвонить:

 setDisplayedChild(R.id.SettingsView) 

вместо:

 setDisplayedChild(3) 

Вы можете использовать метод indexOfChild (View child):

 viewAnimator.setDisplayedChild( viewAnimator.indexOfChild( findViewById(R.id.SettingsView) ) ); 

Эти классы – это просто расширения ViewGroup, которые содержат дочерний список и массив View.

Вы можете легко расширить любой, который вы хотите просмотреть в списке представлений для Id. (Непроверенный код следует)

 class myFlipper extends ViewFlipper { public myFlipper(Context context) { super(context); } int getChildById(int id) { int childindex = -1; int i = 0; while (i<getChildCount()) { View v = getChildAt(i); if (v.getId()==id) { childindex = i; break; } i++; } return childindex; } void setDisplayedChildById(int id) { int i = getChildById(id); if (i != -1) { setDisplayedChild(i); } } }