2017-10-19 28 views
0

J'ai une liste de questions avec des choix de réponses (supposons 5 questions). Actuellement, les 5 questions sont chargées simultanément dans RecyclerView, de sorte qu'un étudiant peut répondre à toutes les questions de la vue. Je voudrais changer cela de telle sorte que la première question se charge et seulement après que l'étudiant a répondu et clique sur le bouton soumettre, sera le deuxième chargement et ainsi de suite. En d'autres termes, soumettez la réponse à la question 1, l'affichage efface et montre la question 2 et ainsi de suite. Un exemple d'application que j'ai vu réaliser est Duolingo. Vous ne voyez la question suivante qu'une fois que vous avez soumis l'actuelle. Comment puis-je y parvenir?Comment afficher les éléments d'un RecyclerView un par un sur ButtonClick au lieu de charger toutes les questions à la fois

+0

Ajouter plus de code pour résoudre votre question en utilisant vos propres variables et la logique – Xenolion

+0

@Xenolion Je n'ai pas la logique cependant, comme je ne sais pas comment aller à ce sujet tous ensemble –

Répondre

4

Si vous ne souhaitez afficher qu'une seule question à la fois, vous n'avez pas besoin d'utiliser un RecyclerView. Utilisez simplement les vues de texte et réutilisez-les.

Si vous souhaitez afficher les anciennes questions lorsqu'une nouvelle question est déverrouillée, vous pouvez la gérer dans la méthode getItemCount() de l'adaptateur de votre recycleur.

D'abord trier les questions dans l'ordre et de l'utilisation:

@Override 
public int getItemCount() { 
    return currentQuestionIndex + 1; 
} 

Après cela, lorsque le bouton suivant est cliqué, incrémenter l'index de la question actuelle et appelez notifyDataSetChanged() dans votre RecyclerView.

Si vous souhaitez afficher une seule question et utiliser RecyclerView de toute façon, renvoyez 1 à partir de la méthode getItemCount. Ensuite, dans la méthode onBindViewHolder au lieu d'utiliser le paramètre position pour obtenir élément de la liste, utilisez list.get(currentQuestionIndex);

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    Question question = questionList.get(currentQuestionIndex); 
    //other code 
} 
+0

Si vous ne voulez pas afficher la vieille question, juste effacer l'ensemble de données, et ajouter la question suivante et appeler 'notifydatasetchanged' –

+0

J'ai essayé d'utiliser textviews et de les réutiliser mais il C'était assez difficile d'y réfléchir et je me suis contenté du RecyclerView. Les questions sont triées par niveau et mélangées. –

+0

@NabinBhandari où déclarez-vous 'currentQuestionIndex'? –