PagerAdapter在滑动时更改TextView

时间:2017-07-29 20:14:35

标签: android android-pageradapter

我正在使用PagerAdapter来浏览几个完美正常的ImageView。我在画廊中有很多人,我希望为他们添加个人姓名/描述(id:speaker_name)。我开始工作的所有内容都是相同的描述。我对此非常陌生,我现在正努力工作一天。我发现的所有解决方案都使用片段或OnPageChangeListener,但我无法弄清楚如何实现它。

这就是我所拥有的:

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

2 个答案:

答案 0 :(得分: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()的实现,对我来说是最好的方法。

答案 1 :(得分:0)

让我给你一个基本的想法

  1. 将Activity布局绑定到的ViewPager。
  2. 扩展ViewPager / FragmentPager的ImageAdapter,它基本上将视图或片段添加到viewpager中,以便活动可以向您显示。
  3. 活动通过将viewpager的适配器设置为ImageAdapter来连接两个对象 就像我在#2中所说的那样,有很多方法可以实现ViewPager,那里有很多站点。 参考https://www.bignerdranch.com/ 它详细解释了