动态添加和删除视图到viewpager

动态添加和删除视图到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吗?

谢谢。


MMMHUHU
浏览 846回答 3
3回答

MYYA

我一直在寻找简单的解决方案来动态地从viewpager(没有片段)中删除视图。因此,如果您有一些您的网页所属的信息,则可以将其设置为View as tag。就像那样(适配器代码):@Overridepublic&nbsp;Object&nbsp;instantiateItem(ViewGroup&nbsp;collection,&nbsp;int&nbsp;position){ &nbsp;&nbsp;&nbsp;&nbsp;ImageView&nbsp;iv&nbsp;=&nbsp;new&nbsp;ImageView(mContext); &nbsp;&nbsp;&nbsp;&nbsp;MediaMessage&nbsp;msg&nbsp;=&nbsp;mMessages.get(position); &nbsp;&nbsp;&nbsp;&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;iv.setTag(media); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;iv;}@Overridepublic&nbsp;int&nbsp;getItemPosition&nbsp;(Object&nbsp;object){ &nbsp;&nbsp;&nbsp;&nbsp;View&nbsp;o&nbsp;=&nbsp;(View)&nbsp;object; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;index&nbsp;=&nbsp;mMessages.indexOf(o.getTag()); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(index&nbsp;==&nbsp;-1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;POSITION_NONE; &nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;index;}您只需要从mMessages中删除您的信息,然后调用notifyDataSetChanged()您的适配器。坏消息在这种情况下没有动画。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android