目前我的Android应用程序中有一个自定义的PagerAdapter类,它基本上为使用游标的每次滑动提供了一个新的闪存卡。在开始时,它提供了一个自定义XML,基本上会给出指令(向左滑动,向下滑动,向下滑动)。向右滑动后,它将移动到闪存卡上并在人滑动时循环切换。我想做的是两件事:
1)在ViewPager结束时(在光标到达最后一个位置并且用户看到最后一张卡片后),我想要像开头一样附加自定义XML视图。
2)我想让ViewPager在此视图处停止并使其进一步向右滑动将无法执行任何操作。
目前1)非常重要,一直令我感到沮丧。 2)我可以没有生活,但是对于将来的参考资料会很方便。我已经写下了我的代码,希望有些Android / ViewPager / PagerAdapter专家可以帮助我。谢谢你的帮助!
@Override
public Object instantiateItem(View view, int position) {
LinearLayout layout = null;
int position2 = position;
if(position == 0){
layout = (LinearLayout) inflater.inflate(R.layout.activity_slide_info, null);
}else{
position2--;
cursor.moveToPosition(position2);
layout = (LinearLayout) inflater.inflate(R.layout.activity_card, null);
TextView cardTitle = (TextView) layout.findViewById(R.id.pirate_card_title);
TextView cardExample = (TextView) layout.findViewById(R.id.pirate_card_example);
TextView cardDefinition = (TextView) layout.findViewById(R.id.pirate_card_definition);
cardTitle.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_TITLE)));
cardExample.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_SENTENCE)));
cardDefinition.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_DEFINITION)));
}
((ViewPager) view).addView(layout);
return layout;
}
答案 0 :(得分:0)
ViewPager有时候有点挑剔。
处理第二个问题的方法更简单:你实现了getCount()吗?这应该解决你的第二个问题 - 将长度设置为你拥有的卡总数(当然减去一个)。这应该使它不会超过卡的总数 - 如果你把它留空,它会在你去最后一张卡时崩溃(因为它试图加载下一张卡却没有找到任何东西)。
第一个问题有点复杂:如何让它在到达最后一个位置时运行代码?执行此操作的最佳方法是在实现ViewPager的任何地方实现onPageChangeListener(可能是onCreate())。这是一个例子:
mPageChangeListener = new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int pos) {
if (pos == lastPage) {
//display your XML or do anything else you want to do when done here
}
}
};
yourViewPager.setOnPageChangeListener(mPageChangeListener);
希望这能解决您的其他问题!