在 ViewPager 中单击按钮更改文本视图
Posted
技术标签:
【中文标题】在 ViewPager 中单击按钮更改文本视图【英文标题】:Change Text View on button click in ViewPager 【发布时间】:2017-03-30 10:28:14 【问题描述】:我在我的应用程序中使用了一个 viewpager,其中我有许多寻呼机。在这个页面中,我有一个 TextView 和一个 Button,当单击该寻呼机中的按钮时,我希望能够更改该寻呼机中的 textview。
我有下面的代码,但是当我点击按钮时文本没有改变。
@Override
public Object instantiateItem(ViewGroup collection, int position)
View view = null;
LayoutInflater h = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = h.inflate(R.layout.content, null);
tvName = (TextView) view.findViewById(R.id.tvName);
btnView = (Button) view.findViewById(R.id.viewBTN);
tvName.setText("Original Text")
btnView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
tvName.setText("new Test")
);
collection.addView(view);
return view;
【问题讨论】:
那么错误是什么?没有更新吗? @rafsanahmad007 没有错误,只是没有更新 【参考方案1】:你可以制作一个TextView数组。并将数组中的 Textview 用于特定位置。这是完整的代码。
private TextView[] mTextVIews;
private final LayoutInflater layoutInflater;
private Context mContext;
ArrayList<String> mList;
public MyAdapter(Context mContext, ArrayList<String> mList)
layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mContext = mContext;
this.mList = mList;
mTextVIews = new TextView[mList.size()];
@Override
public int getCount()
return mList.size();
@Override
public boolean isViewFromObject(View view, Object object)
return view == ((View) object);
@Override
public Object instantiateItem(ViewGroup container, final int position)
View view = layoutInflater.inflate(R.layout.My_layout, container, false);
btnView = (Button) view.findViewById(R.id.viewBTN);
tvName = (TextView) view.findViewById(R.id.tvName);
mTextVIews[position] = tvName;
btnView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
mTextVIews[position].setText("new Test");
);
container.addView(view);
return view;
【讨论】:
【参考方案2】:在clickListener
中使用view.findViewById(R.id.tvName);
【讨论】:
虽然这段代码 sn-p 可以解决问题,但包含解释确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。 我通过反复试验得到了这个解决方案,我真的不知道它背后的深层解释。我知道它有效,所以我决定发布它以防其他人也用谷歌搜索这个问题。【参考方案3】:只要写下这一行
view.btnView.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
view.tvName.setText("new Test")
);
【讨论】:
找不到符号变量 tvName【参考方案4】:在该页面的 java 文件中使用相同的代码。示例 如果您的第一页被命名为 page1.java,则在该 java 文件中进行更改。有关 viewpager 的更多详细信息,您可以访问 badassandroiddevlopers.blogspot.in。
【讨论】:
以上是关于在 ViewPager 中单击按钮更改文本视图的主要内容,如果未能解决你的问题,请参考以下文章