问题描述
我的寻呼机适配器(扩展了PagerAdepter)具有一个textview.然后使用MainActivity的onPageSelected更新此textview.其位置> 0的更新textview,但起始页(位置0)在启动时不会更新.当我向前滑动然后向后滑动时;它设置位置0的值,但我无法在启动时设置值.如何为星标页设置值?
My pager adapter ( extends PagerAdepter ) has a textview in it. And I update this textview with MainActivity's onPageSelected . Its update textview for position > 0 , but start page (position 0) doesn't update on startup. When I swipe forward then swipe back; it sets value for position 0 BUT I couldnt set value ON START. How can set value for star page ?
public void onPageSelected(int position) {
switch (position) {
case 0:
PagerAdapter.tv.setText("value"); // => doesnt work on start
break;
default:
PagerAdapter.tv.setText("value");
break;
}
}
完整代码:
public class QuizStart extends SlidingFragmentActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
mPager = (ViewPager)findViewById(R.id.pager);
QuestionPagerAdapter mAdapter = new QuestionPagerAdapter();
mPager.setAdapter(mAdapter);
QuizStart.onPageSelected(0);
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) { }
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) { }
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
PagerAdapter.tv.setText("value"); // => doesnt work on start
break;
default:
PagerAdapter.tv.setText("value");
break;
}
}
});
}
}
推荐答案
在创建OnPageChangeListener
来设置起始状态时,您可以手动调用onPageSelected(0)
:
You can manually call onPageSelected(0)
when you create your OnPageChangeListener
to set the starting state:
OnPageChangeListener pageChangeListener = new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) { }
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) { }
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
QuizStart.next.setText(getmycurrentpage()+"");
break;
default:
QuizStart.next.setText(getmycurrentpage()+"");
break;
}
}
});
mPager.setOnPageChangeListener(pageChangeListener);
// do this in a runnable to make sure the viewPager's views are already instantiated before triggering the onPageSelected call
mPager.post(new Runnable()
{
@Override
public void run()
{
pageChangeListener .onPageSelected(viewPager.getCurrentItem());
}
});
修改
现在,它将不会得到 @ metemet06
这篇关于onPageSelected不适用于首页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!