2017-07-29 150 views
-1

我正在使用PagerAdapter在幾個ImageView中進行滑動,這完全正常。我在畫廊裏有一羣人,我希望爲他們添加一個單獨的名稱/描述(id:speaker_name)。我所有的工作都是對所有人的描述。我絕對是新來的,我現在正努力工作一天。我發現所有的解決方案使用片段或OnPageChangeListener,但我無法弄清楚如何實現它。PagerAdapter在刷卡時更改TextView

這就是我的了:

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

活動:

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

歡迎來到SO!查看這篇文章,瞭解如何提出一個很好的問題:https://stackoverflow.com/help/how-to-ask。在這種情況下,我認爲你需要告訴我們你遇到了什麼錯誤。 –

回答

1

要刷卡時,你可以做到這裏面改變的TextView文本的OnCreate ()方法:

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

       } 

      }); 

這是viewpager的實現OnPageChangeListener()對我來說是最好的方法。

+0

我愛你<3非常感謝你! – BCuracao

0

讓我給你的基本思路

  1. ViewPager該活動佈局綁定到。
  2. ImageAdapter擴展了ViewPager/FragmentPager,它基本上將視圖或片段添加到viewpager中,以便該活動可以向您展示它。
  3. 該活動通過將viewpager的適配器設置爲您的ImageAdapter來連接這兩個對象 就像我在#2中所說的那樣,您可以通過多種方式實現ViewPager,這裏有很多網站。 參考https://www.bignerdranch.com/ 它很詳細地解釋