+-

我正在开发一个使用ViewPager向用户显示一堆闪存卡的应用程序.我的问题如下-我有一个自定义的PagerAdapter,可以处理游标并从数据库中获取一堆数据并将其放入视图中.我想添加一个删除卡的选项,但不确定如何去做.这是我的PagerAdapter代码.不太确定从这里去哪里.
public class CardCursorPagerAdapter extends PagerAdapter {
private Cursor cursor;
private LayoutInflater inflater;
public CardCursorPagerAdapter(Context context, Cursor cursor){
this.cursor = cursor;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void swapCursor(Cursor cursor){
this.cursor = cursor;
}
@Override
public void destroyItem(View view, int position, Object object) {
((ViewPager) view).removeView((LinearLayout) object);
}
@Override
public int getCount() {
if (cursor == null) {
return 0;
} else {
return 1000;
}
}
@Override
public Object instantiateItem(View view, int position) {
LinearLayout layout;
int position2 = position;
if (position == 0){
layout = (LinearLayout) inflater.inflate(R.layout.activity_slide_info, null);
} else {
position2++;
position2 = position2 % cursor.getCount();
cursor.moveToPosition(position2);
layout = (LinearLayout) inflater.inflate(R.layout.activity_card, null);
TextView cardTitle = (TextView) layout.findViewById(R.id.card_title);
TextView cardExample = (TextView) layout.findViewById(R.id.card_example);
TextView cardDefinition = (TextView) layout.findViewById(R.id.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;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
}
最佳答案
对于ViewPager删除,确实有助于了解ViewPager与您实现的适配器的交互.特别是,您应该了解适配器(通常为Array)中的数据引用,以及该对象的状态如何与viewpager中的“ populate()”和“ notify()”的调用相关.非常重要的是,在删除时,您需要考虑以下事项:
适配器中数据数组的状态(硬删除或位置删除(设置为null))
在适配器上调用“ notifyDataChanged()”,该适配器委派给VP上的多个调用
在VP上的委托调用过程中,在“ dataSetChanged()”中,mAdapter.getItemPosition(ii.object)必须返回PagerAdapter.POSITION_NONE进行删除
查看source
注意:ViewPager示例代码中使用的某些适配器在调用’getItemPostion()’时返回默认值,并且默认行为不适用于Deletes.
点击查看更多相关文章
转载注明原文:android-ViewPager PagerAdapter删除项目 - 乐贴网