Je voudrais juste créer deux classes et les faire gonfler la disposition désirée. Dans chaque classe, vous pourriez avoir la logique différente. Votre activité ne contiendra alors que ViewFlipper et la logique pour passer à la suivante/précédente.
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);
}
}
Première Voir
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.
}
Seconde vue
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.
}
Puis, quand vous devez changer d'image lorsque de chaque FirstView ou SecondView, vous appelez flipper.showNext()
ou flipper.showPrevious()
EDIT
Pour transmettre des données entre les deux points de vue, vous pouvez mettre en œuvre des méthodes de la classe d'activité à cet effet, puis laisser les deux points de vue tiennent une référence à l'activité. Une autre alternative est de créer une interface que les deux vues doivent mettre en œuvre:
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.
}
Où puis-je transmettre un paramètre dans cet exemple? – MDP
J'ai modifié la réponse ci-dessus pour répondre plus précisément à vos besoins. – kaspermoerch
À quoi ressemblerait viewFlipper de R.id.viewFlipper? –