2017-07-29 3 views
-1

J'utilise un PagerAdapter pour faire défiler deux ImageViews qui fonctionnent parfaitement. J'ai un groupe de personnes dans la galerie et je souhaite ajouter un nom individuel/description (id: speaker_name) pour eux. Tout ce que je dois travailler est la même description pour tous. Je suis absolument nouveau à cela et je me bats depuis un jour maintenant pour le faire fonctionner. Toutes les solutions que j'ai trouvées ont utilisé des fragments ou un OnPageChangeListener mais je n'ai pas pu comprendre comment l'implémenter.PagerAdapter change TextView lors du balayage

C'est ce que j'ai:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".MainActivity" > 

     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentStart="true"> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/view_pager" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@color/basicBackground"> 
      </android.support.v4.view.ViewPager> 

      <TextView 
       android:id="@+id/speaker_name" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="50sp" 
       android:text="The Name" 
       android:textAlignment="center" 
       android:textColor="@android:color/white" 
       android:textSize="30sp" /> 
     </FrameLayout> 
    </RelativeLayout>` 

PagerAdapter:

public class ImageAdapter extends PagerAdapter { 

SpeakerActivity sa; 
Context context; 
int i = 0; 

public int[] GalImages = new int[] { 
     R.drawable.ben, 
     R.drawable.brett, 
     R.drawable.mark, 
     R.drawable.dusan, 
     R.drawable.michael, 
     R.drawable.mike, 
     R.drawable.ollie, 
     R.drawable.rebecca, 
     R.drawable.sebastian, 
     R.drawable.thomas, 
     R.drawable.tomasz, 
     R.drawable.toni, 
}; 
ImageAdapter(Context context){ 
    this.context=context; 
} 
@Override 
public int getCount() { 
    return GalImages.length; 
} 

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

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    ImageView imageView = new ImageView(context); 
    int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium); 
    imageView.setPadding(padding, padding, padding, padding); 
    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
    imageView.setImageResource(GalImages[position]); 
    ((ViewPager) container).addView(imageView, 0); 
    return imageView; 
} 

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

Activité:

public class SpeakerActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.speaker_activity); 

    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
    ImageAdapter adapter = new ImageAdapter(this); 
    viewPager.setAdapter(adapter); 
} 
} 
+0

Bienvenue à SO! Découvrez ce post sur la façon de poser une bonne question: https://stackoverflow.com/help/how-to-ask. Dans ce cas, je pense que vous devez nous dire quelle erreur vous obtenez. –

Répondre

1

Pour modifier le texte de textview lorsque vous glisser pouvez le faire à l'intérieur oncreate() méthode:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

       @Override 
       public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

       } 

       @Override 
       public void onPageSelected(int position) { 
        switch (position){ 
         case 0: 
          //Do stuff 
          textview.setText("Ben"); 
          break; 
         case 1: 
          //Do stuff 
          textview.setText("Brett"); 
          break; 
        //Add other cases for the pages 

        } 

       } 

       @Override 
       public void onPageScrollStateChanged(int state) { 

       } 

      }); 

C'est la mise en œuvre de viewpager OnPageChangeListener() pour moi la meilleure façon.

+0

Je t'aime <3 Merci beaucoup! – BCuracao

0

moi de vous donner l'idée de base

  1. ViewPager que la mise en page d'activité est binded à.
  2. ImageAdapter qui étend ViewPager/FragmentPager qui ajoute essentiellement des vues ou des fragments dans le viewpager afin que l'activité puisse vous le montrer.
  3. l'activité connecte les deux objets en définissant l'adaptateur du viewpager sur votre ImageAdapter Comme je l'ai dit au n ° 2, vous pouvez mettre en œuvre ViewPager de nombreuses façons. se réfèrent à https://www.bignerdranch.com/ il expliquent en détail