我正在尝试使用viewpager对页面列表进行排序。对于我的程序,页数在20-35之间变化。这个数字是从sql lite数据库中提取的“questions”字符串数组变量的大小确定的。以下未显示此代码,但我已确认代码正确查找变量的大小以及数据库中的值
我的问题是第一页加载但是当我尝试滚动到下一页时,程序崩溃了。每个页面都是相同的,除了一个textview(currentQuestion),我试图根据正在查看的当前页面动态更改(例如,如果在第8页,加载来自questions变量的第8个变量以显示在currentQuestion textview)。
任何帮助将不胜感激!我不想单独定义每个视图...
感谢找到此解决方案的用户(以下代码来自Android ViewPager and 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);
}
}
答案 0 :(得分:0)
您遇到的错误是什么?我认为nullPointer? 什么是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) {
}
});
希望有所帮助,如果有帮助或者您需要其他任何信息,请给我留言