在 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 中单击按钮更改文本视图的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 的啥代码,以便用户可以通过单击某些按钮来更改文本视图中的字体大小?

通过按钮更改 viewpager 片段 Click

更改按钮上的标签文本单击列表视图项内

如何在不更改整个文本视图颜色的情况下更改文本颜色

动态 TextView 未在片段中更新

android在单击按钮时更改列表视图内的图像视图