Я бы просто создал два класса и заставил их раздувать нужный макет.В каждом классе у вас может быть своя логика.Тогда ваша деятельность будет содержать только ViewFlipper и логику для переключения на следующий / предыдущий.
public class ViewFlipperActivity extends Activity {
public void onCreate( Bundle savedInstanceState ) {
super( savedInstanceState );
setContentView( R.layout.my_viewFlipper_lauout );
flipper = (ViewFlipper) findViewById( R.id.viewFlipper );
FirstView first = new FirstView( this, flipper );
flipper.addView( first );
SecondView second = new SecondView( this, flipper );
flipper.addView( second );
first.setDataPasser( second );
second.setDataPasser( first );
}
}
Первый просмотр
public class FirstView extends LinearLayout implements DataPasser {
private ViewFlipper flipper;
private DataPasser dataPasser;
public FirstView( Context context, ViewFlipper flipper ) {
super(context);
inflate( ... );
this.flipper = flipper;
// Do other stuff.
}
protected void setDataPasser( DataPasser dataPasser ) {
this.dataPasser = dataPasser;
}
//Implement the other methods required by your interface.
}
Второй просмотр
public class SecondView extends LinearLayout {
private ViewFlipper flipper;
private DataPasser dataPasser;
public SecondView( Context context, ViewFlipper flipper ) {
super(context);
inflate( ... );
this.flipper = flipper;
// Do other stuff.
}
protected void setDataPasser( DataPasser dataPasser ) {
this.dataPasser = dataPasser;
}
//Implement the other methods required by your interface.
}
Затем, когда вам нужно изменить представление, когда вы находитесь в FirstView или SecondView, вы вызываете flipper.showNext()
или flipper.showPrevious()
EDIT
Для передачи данных между двумя представлениями вы можете реализовать некоторые методы в классе действия для этой цели, а затем позволить двум представлениям содержать ссылку на действие.Другой альтернативой является создание интерфейса, который должны реализовывать два представления:
interface DataPasser {
void setDataPasser( DataPasser dataPasser ); //To be able to add each view to the other.
void passData( Data data ); //Or other methods needed to pass the data.
}