所以我正在尝试为Android制作闪卡。
我决定将ViewPager与PageAdapter一起使用。
我有一个用于创建和存储视图的Question类,因此每个问题都有自己的视图。 (问题是闪卡)。 Flashcard的UI位于ViewFlipper
中还有一个扩展Application的类。我将我的问题(抽认卡)存储在ArrayList中。
这是我的PageAdapter
class MyAdapter extends PagerAdapter {
Context mContext;
LearnHelper app;
int lastremoved = -1;
public MyAdapter(Context context)
{
mContext = context;
}
@Override
public Object instantiateItem(ViewGroup collection, int i)
{
View view = app.getTmpQuestion(i).getViewingView(collection, mContext, i);
if(collection.indexOfChild(view) == -1) {
collection.addView(view);
}
return view;
}
@Override
public void destroyItem(ViewGroup collection, int i, Object view)
{
app.getTmpQuestion(i).unbindListeners();
collection.removeView((View) view);
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return view == object;
}
@Override
public int getCount() {
return app.getTmpQuestionCount();
}
public void setApp(LearnHelper receivedapp) {
app = receivedapp;
}
@Override
public int getItemPosition(Object object){
View view = (View) object;
if(lastremoved < 0) {return POSITION_UNCHANGED;}
if(view.getId() >= lastremoved-1)
{
return POSITION_NONE;
}
else
{
return POSITION_UNCHANGED;
}
}
public void setLastremoved(Integer i)
{
lastremoved = i;
}
}
我的适配器和viewpager已设置
viewPager = (ViewPager) findViewById(R.id.pager);
adapter = new MyAdapter(this);
adapter.setApp(app);
viewPager.setAdapter(adapter);
viewPager.setPageTransformer(true, new DepthPageTransformer());
viewPager.setOnPageChangeListener(this);
两种方法,第一种标记删除的问题,第二种方法在滑动到下一个屏幕后删除它。
public void hideQuestionCard(Question question) {
question.MarkForDeletion();
adapter.setLastremoved(app.tmpquestions.indexOf(question));
MoveNext();
}
public void onPageScrollStateChanged(int state) {
if(state == ViewPager.SCROLL_STATE_IDLE) {
int currentitem = viewPager.getCurrentItem();
if(currentitem == 0) {return;}
Question question = app.getTmpQuestion(currentitem - 1);
if(question.IsMarkedForDeletion()) {
app.removeTmpQuestion(question);
adapter.notifyDataSetChanged();
}
}
}
他们工作......唯一的问题是,这种情况发生了 https://drive.google.com/file/d/0B3jgzARMNYmRSkVwNV81bEZRSnc/view?usp=sharing
如何才能使拆卡工作变得干净整洁?