ビューページャーを使用してページのリストを並べ替えようとしています。私のプログラムでは、ページ数は 20 から 35 の間で変動します。この数は、sql lite データベースから取得された「questions」文字列配列変数のサイズから決定されます。このコードは以下に示されていませんが、コードが変数のサイズとデータベースからの値を正しく検出していることを確認しました
私の問題は、最初のページが読み込まれることですが、次のページにスクロールしようとするとすぐにプログラムがクラッシュします。各ページは、表示されている現在のページに基づいて動的に変更しようとしている 1 つのテキストビュー (currentQuestion) を除いて同一であることを意図しています (たとえば、8 ページの場合、質問変数から 8 番目の変数をロードして表示します)。 currentQuestion テキストビュー)。
どんな助けでも大歓迎です!各ビューを個別に定義したくない...
このソリューションを見つけたユーザーに感謝します(Android ViewPager および ListViewsからの以下のコード)
問題は、私が最も変更したコード、つまり 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);
}
}