2017-08-24 4 views
0

car le titre indique que ViewPager n'affiche pas le contenu auquel il est censé appartenir. J'ai cherché partout des solutions, mais aucune d'entre elles n'a fonctionné. Peut-être que vous pouvez m'aider. Merci d'avance!ViewPager n'affiche pas les vues personnalisées

Je souhaite ajouter dynamiquement des vues personnalisées à l'adaptateur, car les vues sont asynchrones avec les données d'une base de données.

Le PagerAdapter personnalisé

public class SlidePagerAdapter extends PagerAdapter { 

    private Context mContext; 
    private List<CardView> mCards; 

    public SlidePagerAdapter(Context context) { 
     mContext = context; 
     mCards = new ArrayList<>(); 
    } 

    @Override 
    public int getCount() { 
     return mCards.size(); 
    } 

    @Override 
    public int getItemPosition (Object object) { 
     int index = mCards.indexOf(object); 
     if (index == -1) 
      return POSITION_NONE; 
     else 
      return index; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     View v = mCards.get(position); 
     container.addView(v); 
     return container; 
    } 

    @Override 
    public void destroyItem (ViewGroup container, int position, Object object) { 
     container.removeView(mCards.get(position)); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == object; 
    } 

    public void add(Card card) { 
     mCards.add(new CardView(mContext, card)); 
    } 

    public void addAll(List<Card> cards) { 
     for (Card card : cards) { 
      add(card); 
     } 
    } 

    public void clear() { 
     mShopcards.clear(); 
    } 
} 

Les vues personnalisées sont faites et enregistrés dans la liste dans l'adaptateur avec succès, mais ils ne se présentent pas dans le ViewPager ...

Répondre

0

Cocher cette :

@Override 
public boolean isViewFromObject(View view, Object object) { 
return view == object; 
} 

Vous ne pouvez pas comparer la vue 2. est l'enfant de l'objet.

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
View v = mShopcards.get(position); 
container.addView(v); 
return container; 
}