动态添加和删除视图到viewpager在我的应用程序中,用户将从他的数据的单个视图开始。我想添加一个ViewPager,并允许用户根据需要添加更多视图。我该怎么做呢?(我不想使用FragmentPagerAdapter。)我已经阅读了无数的帖子和概述,但我仍然遗漏了一些东西。这是我认为我理解的:MainActivity创建一个ViewPager和PagerAdapter:ViewPager pager = null;MainPagerAdapter adapter = null;public void onCreate (Bundle savedInstanceState){
super.onCreate (savedInstanceState);
pager = new ViewPager (this);
setContentView (pager);
adapter = new MainPagerAdapter();
pager.setAdapter (adapter);
View v0 = code_to_create_initial_view();
adapter.add (v0, 0); }使用PagerAdapter提供视图集。为此,我似乎需要添加和删除视图的方法,就像这样; 显然需要更多的东西来告诉ViewPager的内容已经改变以及如何显示更改:class MainPagerAdapter extends PagerAdapter{
// This holds all the currently displayable views, in order from left to right.
private ArrayList<View> views = new ArrayList<View>();
public void addView (View v, int position)
{
views.add (position, v);
}
public void removeView (int position)
{
views.remove (position);
}}另外,我需要实现以下的虚拟方法。我迷失在这里 - 什么叫他们以及他们应该做什么(好吧,getCount很明显)? public object instantiateItem (ViewGroup pager, int position);
public void destroyItem (ViewGroup, int, Object);
public int getCount ();
public boolean isViewFromObject (View, Object);什么是ViewGroup参数 - 是不是ViewPager本身的包含组?isViewFromObject做了什么 - 对象如何首先与视图关联?添加或删除视图时,我应该调用startUpdate和finishUdate吗?谢谢。
3 回答
MYYA
TA贡献1868条经验 获得超4个赞
我一直在寻找简单的解决方案来动态地从viewpager(没有片段)中删除视图。因此,如果您有一些您的网页所属的信息,则可以将其设置为View as tag。就像那样(适配器代码):
@Overridepublic Object instantiateItem(ViewGroup collection, int position){ ImageView iv = new ImageView(mContext); MediaMessage msg = mMessages.get(position); ... iv.setTag(media); return iv;}@Overridepublic int getItemPosition (Object object){ View o = (View) object; int index = mMessages.indexOf(o.getTag()); if (index == -1) return POSITION_NONE; else return index;}
您只需要从mMessages中删除您的信息,然后调用notifyDataSetChanged()
您的适配器。坏消息在这种情况下没有动画。
- 3 回答
- 0 关注
- 845 浏览
添加回答
举报
0/150
提交
取消