Android: RecyclerView.L'adaptateur ne fonctionne pas comme prévu

Mon id question directement liée à @Richard's à propos de la méthode onBindViewHolder() à l'intérieur de la RecyclerView.L'adaptateur n'est pas appelé, comme il (et moi) en attendre.

J'ai remarqué que cette méthode est appelée correctement jusqu'à la fin de mon dataset (9 CardViews, le défilement vers le bas), mais quand j'ai essayer de revenir (faire défiler vers le haut), il ne s'appelle pas plus. Le vrai problème, c'est que là je fais mes modifications dans le jeu de données et d'appel notifyDataSetChanged(), mais avec cette étrange (pour moi) le comportement de mes modifications ne prennent pas de place quand ils sont censés faire.

La photo, je l'joindre veut essayer de préciser:

  • Je atteindre le fond de la Rec.Affichage (cardView - Décubitus dorsal: tout va bien);
  • traiter avec les cartes déjà montré, totalement ou partiellement, il n'y a pas de problème (en Décubitus dorsal, le Gérondif et le Participe);
  • mais quand j'arrive à la première cardView complètement occulté, onBindViewHolder() n'est pas appelée plus et je peux le voir dans le debug que le jeu de données liées à la carte est "Couchée", et ici, il est: de la position Couchée cardView est montré.

Android: RecyclerView.L'adaptateur ne fonctionne pas comme prévu

J'ai pensé que c'était exactement le même problème de Richard rencontrées dans sa question, et j'ai essayé sa exactement la même solution: j'ai forcé setHasStableIds() pour de vrai dans ma Carte du constructeur,

public CardAdapter(List<Object> items){
    this.items = items;
    adapterList = new ArrayList<String>();
    formAdapt = new ConjFormAdapter(adapterList);
    itemMap = new HashMap<Object, Long>();
    setHasStableIds(true);
}

itemMap est la Carte que j'mettre en œuvre dans mon activité pour définir l'id unique de mon dataset,

et emportait getItemId() de cette façon:

public long getItemId(int position) {
    Object item = items.get(position);
    return itemMap.get(item);
}

Mais comme vous pouvez le voir sur l'image, je reçois toujours ce résultat: aucune idée, s'il vous plaît?

Modifier

La mise en œuvre de itemMap dans mon activité:

for(int i=0, j=0; i<conj_items.size(); i++, j++)
            conjAdapter.getItemMap().put(conj_items.get(i), (long) j);

où conj_items est la liste de tableaux je passe à la Carte.

aucune idée, s'il vous plaît? oui, votre mise en œuvre de la "id uniques" est faux ... pourquoi n'utilisez-vous pas de "vraies écuries id" ? N'avez-vous pas?
Pourquoi ne pas simplement retourner la position de la carte d'identité? Comment est itemMap peuplée?
J'ai édité ma question avec le code manquant. Pour Selvin: je ne comprends pas ce que vous êtes suggérant: ce que le "réel stable id" vous mentionner?
Juste retour position de getItemId si vos éléments de données n'ont pas de réelle Id
En fait, j'ai déjà essayé cette solution mais rien n'a changé... Pourriez-vous me donner un exemple de la "Id", s'il vous plaît? Je suppose que ce sont les mêmes "réel stable id" @Selvin parlait!

OriginalL'auteur Massimo Baldrighi | 2015-01-29