J'ai une boucle améliorée, qui va gonfler de manière dynamique de nombreuses dispositions concernant le nombre de valeurs contenues dans mon tableau.Comment enregistrer l'état des vues conservées dans le viewpager dynamique
Cela fonctionne parfaitement, cependant, il y a une méthode appelée à chaque itération, qui fonctionne également mais il y a un gros bug dont j'ai besoin d'aide pour résoudre. Imaginez qu'il y ait 5 articles dans mon tableau, donc 5 mises en page sont gonflées, dans ces mises en page il y a une petite section de type carte à gratter sur la mise en page.
Maintenant, si l'utilisateur est sur la page 1, utilise la carte à gratter, puis passe à la page 2, utilise la carte à gratter etc etc, cela fonctionne très bien.
Mais si l'utilisateur est sur la page 1, puis va à dire, page 5, puis de nouveau à la page 1 (essentiellement dans un ordre aléatoire), la carte à gratter ne fonctionne pas. D'après ce que je comprends, la raison en est que la méthode est appelée implémentée à chaque itération et que la vue perd son état si l'utilisateur fait défiler ou fait défiler dans des ordres aléatoires.
Par conséquent, j'ai besoin d'un moyen d'enregistrer l'état d'affichage créé dans mon viewpager.
Est-ce possible pour mon scénario? J'ai fait de mon mieux pour trouver une solution, mais je n'arrive pas à trouver quelque chose qui me semble pertinent pour ma question.
Voici un extrait du code en question. Merci pour vos conseils ou suggestions!
for (String x : array1) {
//loop out the number of layouts relative to the number of questions held in x
View current_layout = LayoutInflater.from(getActivity()).inflate(R.layout.question_fragment, null);
//use the pageAdapter to add the layout to the users view
pagerAdapter.addView(current_layout);
//call method to add functionality to the scratchcard
isCorrect(current_layout);
}
public void isCorrect(View current_layout) {
ScratchoffController controller1 = new ScratchoffController(getActivity())
.setThresholdPercent(0.40d)
.setTouchRadiusDip(getActivity(), 30)
.setFadeOnClear(true)
.setClearOnThresholdReached(true)
.setCompletionCallback(() -> {
})
.attach(current_layout.findViewById(R.id.scratch_view1), current_layout.findViewById(R.id.scratch_view_behind1));
ScratchoffController controller2 = new ScratchoffController(getActivity())
.setThresholdPercent(0.40d)
.setTouchRadiusDip(getActivity(), 30)
.setFadeOnClear(true)
.setClearOnThresholdReached(true)
.setCompletionCallback(() -> {
})
.attach(current_layout.findViewById(R.id.scratch_view2), current_layout.findViewById(R.id.scratch_view_behind2));
ScratchoffController controller3 = new ScratchoffController(getActivity())
.setThresholdPercent(0.40d)
.setTouchRadiusDip(getActivity(), 30)
.setFadeOnClear(true)
.setClearOnThresholdReached(true)
.setCompletionCallback(() -> {
})
.attach(current_layout.findViewById(R.id.scratch_view3), current_layout.findViewById(R.id.scratch_view_behind3));
ScratchoffController controller4 = new ScratchoffController(getActivity())
.setThresholdPercent(0.40d)
.setTouchRadiusDip(getActivity(), 30)
.setFadeOnClear(true)
.setClearOnThresholdReached(true)
.setCompletionCallback(() -> {
})
.attach(current_layout.findViewById(R.id.scratch_view4), current_layout.findViewById(R.id.scratch_view_behind4));
}
Vous devez publier le code dans votre implémentation de pageur de vue réelle (comme s'il contenait des fragments ou juste des vues?). Vos exemples de code manquent de contexte. – dominicoder