PagerAdapter在刷卡时更改TextView
问题描述:
我正在使用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);
}
}
答
要刷卡时,你可以做到这里面改变的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
我爱你 BCuracao
答
让我给你的基本思路
- ViewPager该活动布局绑定到。
- ImageAdapter扩展了ViewPager/FragmentPager,它基本上将视图或片段添加到viewpager中,以便该活动可以向您展示它。
- 该活动通过将viewpager的适配器设置为您的ImageAdapter来连接这两个对象 就像我在#2中所说的那样,您可以通过多种方式实现ViewPager,这里有很多网站。 参考https://www.bignerdranch.com/ 它很详细地解释
欢迎来到SO!查看这篇文章,了解如何提出一个很好的问题:https://stackoverflow.com/help/how-to-ask。在这种情况下,我认为你需要告诉我们你遇到了什么错误。 –