Android:在 ViewPager 中更改文本

本教程将介绍Android:在 ViewPager 中更改文本的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

Android:在 ViewPager 中更改文本 教程 第1张

问题描述

背景

我正在编写一个使用 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 中更改文本的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。