0

我在我的应用程序中使用了一个 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;

}
4

4 回答 4

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;
}
于 2018-05-18T10:50:20.690 回答
1

view.findViewById(R.id.tvName);在里面使用clickListener

于 2019-07-29T12:13:09.263 回答
0

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

于 2017-03-30T10:48:29.973 回答
0

只要把这条线

view.btnView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        view.tvName.setText("new Test")
    }
});
于 2017-03-30T10:39:39.680 回答