Android:在 ViewPager 中更改文本
本教程将介绍Android:在 ViewPager 中更改文本的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
背景
我正在编写一个使用 ViewPager 并且运行良好的应用程序.我需要能够定位其中一种布局(xml 文件)并更新其上的 textviews 和 imageviews.我尝试使用v.findViewById"来放大视图和定位,这似乎是我研究的解决方案,但也许我将它放在正确的位置并且需要更好地向我解释.
我的代码(不尝试定位)
private ImageView circle;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
circle = (ImageView) findViewById(R.id.circles);
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.myViewPager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(1);
myPager.setOnPageChangeListener(new MyPageChangeListener());
}
private int focusedPage = 0;
private class MyPageChangeListener extends ViewPager.SimpleOnPageChangeListener {
@Override
public void onPageSelected(int position) {
focusedPage = position;
switch (focusedPage) {
case 0: circle.setImageResource(R.drawable.circles1); break;
case 1: circle.setImageResource(R.drawable.circles2); break;
case 2: circle.setImageResource(R.drawable.circles3); break;
case 3: circle.setImageResource(R.drawable.circles4); break;
}
}
}
private class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 4;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.zip;
break;
case 1:
resId = R.layout.forecast;
break;
case 2:
resId = R.layout.settings;
break;
case 3:
resId = R.layout.about;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
仅供参考:ImageViewcicle"是屏幕底部的 4 个圆圈的图像,会在页面更改时更新以显示您所在的屏幕.工作正常,只是想解释一下.
目标
在名为forecast"的布局上更新名为city"的文本视图.
提前感谢您的帮助!过了这个小障碍,应该会很轻松了.
推荐答案
好吧,我不保证这可行,但我在 ViewPager 使用兼容性包时遇到了类似的问题,我用这个解决了这个问题:
在您的 instatiateItem
函数视图中,使用您的 resId 执行 setTag:
view.setTag(resId);
那么当你需要改变你的城市"时:
View baseLayout = myPager.findViewWithTag(R.layout.forecast);
TextView city = (TextView) baseLayout.findViewById(R.id.city_id);
其中 R.id.city_id
是您的 TextView 的 id.
好了关于Android:在 ViewPager 中更改文本的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。