在ViewPager中点击按钮更改文本视图

时间:2017-03-30 10:28:14

标签: android android-viewpager viewpage

我在我的应用中使用了一个viewpager,其中有多个寻呼机。在这个页面中,我有一个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;

}

4 个答案:

答案 0 :(得分:2)

你可以创建一个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;
}

答案 1 :(得分:0)

只是把这一行

view.btnView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        view.tvName.setText("new Test")
    }
});

答案 2 :(得分:0)

在该页面的java文件中使用相同的代码。示例如果您的第一个页面被命名为page1.java而不是在该java文件中进行更改。有关viewpager的更多详细信息,请访问badassandroiddevlopers.blogspot.in。

答案 3 :(得分:0)

view.findViewById(R.id.tvName);内使用clickListener