2017-07-29 149 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/ 它很详细地解释