2017-07-29 2 views
-1

Ich benutze einen PagerAdapter, um durch ein paar ImageViews zu wischen, was perfekt funktioniert. Ich habe eine Menge Leute in der Galerie und ich möchte ihnen einen individuellen Namen/Beschreibung (id: Sprecher_Name) hinzufügen. Alles, woran ich arbeite, ist für alle dieselbe Beschreibung. Ich bin absolut neu und ich kämpfe jetzt für einen Tag, um es zur Arbeit zu bringen. Alle Lösungen, die ich gefunden habe, verwendeten Fragmente oder einen OnPageChangeListener, aber ich konnte nicht herausfinden, wie man es implementiert.PagerAdapter ändern TextView beim Wischen

Das ist, was ich habe:

<?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); 
} 
} 

Aktivität:

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

Willkommen zu SO! In diesem Beitrag erfahren Sie, wie Sie eine gute Frage stellen können: https://stackoverflow.com/help/how-to-ask. In diesem Fall müssen Sie uns sagen, welchen Fehler Sie bekommen. –

Antwort

1

Um Textview Text zu ändern, wenn swiping Sie dies innerhalb tun können oncreate() Methode:

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) { 

       } 

      }); 

Dies ist die Implementierung von viewpager OnPageChangeListener() für mich der beste Weg.

+0

Ich liebe dich <3 Vielen Dank! – BCuracao

0

lassen Sie mich Ihnen die Grundidee

  1. ViewPager geben, dass die Aktivität Layout binded wird.
  2. ImageAdapter, der ViewPager/FragmentPager erweitert, der im Viewpager grundsätzlich Ansichten oder Fragmente hinzufügt, damit die Aktivität sie Ihnen anzeigen kann.
  3. Die Aktivität verbindet die beiden Objekte, indem Sie den Adapter des Viewpager auf Ihren ImageAdapter setzen. Wie ich bereits in # 2 gesagt habe, gibt es viele Möglichkeiten, wie Sie den ViewPager implementieren können. beziehen Sie sich auf https://www.bignerdranch.com/ es erklären sehr ausführlich
Verwandte Themen