浏览器页面排序和动态更新文本的ViewPager(视图翻页器)

3
我试图使用ViewPager来浏览页面列表。对于我的程序,页面数量从20到35不等。这个数字是根据从SQLite数据库中获取的“questions”字符串数组变量的大小确定的。下面没有显示此代码,但我已确认该代码正确地找到了变量的大小以及数据库中的值。
我的问题是第一页加载,但只要我尝试滚动到下一页,程序就会崩溃。每个页面都应该相同,除了一个TextView(currentQuestion),我正在尝试根据当前正在查看的页面动态更改它(例如,如果在第8页,则加载问题变量中的第8个变量以显示在currentQuestion TextView中)。
任何帮助将不胜感激!我希望不必单独定义每个视图...
感谢发现此解决方案的用户(下面的代码来自Android ViewPager和ListViews
我猜测问题出在我最修改的代码上,也就是MainActivity。
MainActivity:
public class MainActivity extends Activity {

/** Called when the activity is first created. */

private Context mContext;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = this;
    setContentView(R.layout.main);
    for (int i=0; i<test.count();i++)
    {
        listview.setAdapter(new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, question));
        pages.add(listview);
    }
    System.out.println("test");
    ViewPager vp = (ViewPager) findViewById(R.id.milestoneViewPager);
    PageSwiper adapter = new PageSwiper(mContext,pages);
    vp.setAdapter(adapter);
    int currentPage= vp.getCurrentItem();
    TextView currentQuestion= (TextView) findViewById(R.id.milestoneText);
    currentQuestion.setText(question[currentPage]);
}

}

这里是CustomViewPagerAdapter.java

public class CustomPagerAdapter extends PagerAdapter {

private Context mContext;
private Vector<View> pages;

public CustomPagerAdapter(Context context, Vector<View> pages) {
this.mContext=context;
this.pages=pages;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
View page = pages.get(position);
container.addView(page);
return page;
}

@Override
public int getCount() {
return pages.size();
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}

}
1个回答

0
你遇到了什么错误?我想是空指针异常吧?
PageSwiper类是什么?我猜是自定义类,但为什么要将其命名为适配器?
此外,你只在onCreate方法中设置了问题的文本一次,它应该是循环或其他东西的一部分。
要动态更改文本,请尝试使用viewpager函数setOnPageListener。
这里有一个例子:
vp.setOnPageChangeListener(new OnPageChangeListener(){
        @Override
        public void onPageSelected(int position) {
            TextView txtQuestion= (TextView) findViewById(R.id.milestoneText);
            String currentQuestion = question[position]; // Question from your string array
            txtQuestion.setText(currentQuestion );


        }
        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {


        }
    });

希望这有所帮助,如果有需要或者还有其他问题,请给我留言。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接