Sorry, I'm pretty new to android myself.  I don't think I can be much
help to you on that.

On Feb 10, 1:09 pm, Adi <[email protected]> wrote:
> @tatebn - Hi, I desperately needed this post! But as yours seems to be
> an internal web view, mine is an external file on the SD-Card. I'm
> trying to read it using this,
>
> BufferedReader in = new BufferedReader(new FileReader("/sdcard/
> TextFiles/post.txt"));
>
> And I cannot further decide how to split the content into different
> page views so that they can be added to the addView method. Let me
> know if you have a solution or guide me elsewhere.
>
> P.S. I'm new to Android.
>
> On Feb 8, 9:05 pm, tatebn <[email protected]> wrote:
>
>
>
>
>
>
>
> > I ended up getting this solved as follows.
>
> > I basically just created a new adapter every time the data set needed
> > to change and replaced the adapter for the view pager.
>
> > InternalContentAdapter adapter = new InternalContentAdapter();
> > adapter.loadContents(someContentList);
> > this.internalContentPager.setAdapter(adapter);
>
> > This is my pager adapter.  I'm using internal web views as my views.
> > This probably isn't the best explanation (or implementation) but it
> > works for me.  Let me know if you have any questions.
>
> > /**
> >      * Pager Adapter to handle internal web view pages.  This drives
> > the swipe navigation for the internal content.
> >      *
> >      * @author btate
> >      *
> >      */
> >     private class InternalContentAdapter extends PagerAdapter{
>
> >                 /** The content objects represented by this pager. */
> >                 private List<Content> contents;
>
> >                 /** The starting position. */
> >                 private int startPosition = 0;
>
> >                 /** The starting content id. */
> >                 private String startContentId = null;
>
> >                 /** Flag for whether or not to set the starting position. */
> >                 private boolean setPrimary = true;
>
> >                 @Override
> >                 public int getCount() {
> >                         // Send back the contents size
> >                         return this.contents.size();
> >                 }
>
> >             /**
> >              * Create the page for the given position.  The adapter is
> > responsible
> >              * for adding the view to the container given here, although it
> > only
> >              * must ensure this is done by the time it returns from
> >              * {@link #finishUpdate()}.
> >              *
> >              * @param container The containing View in which the page will 
> > be
> > shown.
> >              * @param position The page position to be instantiated.
> >              * @return Returns an Object representing the new page.  This
> > does not
> >              * need to be a View, but can be some other container of the
> > page.
> >              */
> >                 @Override
> >                 public Object instantiateItem(ViewGroup container, int 
> > position) {
>
> >                         // Load up the page
> >                 InternalWebView page = new InternalWebView(ctx, repo);
>
> > page.loadInternalPage(this.contents.get(position).getContentId());
> >                 page.setInternalWebViewListener(getListener());
>
> >                 //this.parentActivity.registerForContextMenu(page);
>
> >                 // Need to add this without the position
> >                 container.addView(page);
>
> >                 return page;
> >         }
>
> >             /**
> >              * Remove a page for the given position.  The adapter is
> > responsible
> >              * for removing the view from its container, although it only
> > must ensure
> >              * this is done by the time it returns from {@link
> > #finishUpdate()}.
> >              *
> >              * @param container The containing View from which the page will
> > be removed.
> >              * @param position The page position to be removed.
> >              * @param object The same object that was returned by
> >              * {@link #instantiateItem(View, int)}.
> >              */
> >                 @Override
> >                 public void destroyItem(View container, int position, 
> > Object view) {
> >                         ((ViewPager) 
> > container).removeView((InternalWebView) view);
> >                 }
>
> >                 @Override
> >                 public boolean isViewFromObject(View view, Object object) {
> >                         return view==((InternalWebView)object);
> >                 }
>
> >             /**
> >              * Called when the a change in the shown pages has been
> > completed.  At this
> >              * point you must ensure that all of the pages have actually 
> > been
> > added or
> >              * removed from the container as appropriate.
> >              * @param container The containing View which is displaying this
> > adapter's
> >              * page views.
> >              */
> >                 @Override
> >                 public void finishUpdate(ViewGroup container) {
>
> >                         // Set primary flag set to false after all data 
> > loaded
> >                         if(this.setPrimary)
> >                                 // Set the current item
> >                                 
> > internalContentPager.setCurrentItem(this.startPosition);
>
> >                         this.setPrimary = false;
>
> >                 }
>
> >                 @Override
> >                 public void restoreState(Parcelable arg0, ClassLoader arg1) 
> > {}
>
> >                 @Override
> >                 public Parcelable saveState() {
> >                         return null;
> >                 }
>
> >                 @Override
> >                 public void startUpdate(ViewGroup container) {
>
> >                 }
>
> >                 /**
> >                  * Set the contents for the view pager.
> >                  *
> >                  * @param contents      A List of Content objects to be 
> > loaded.
> >                  * @param startPosition The starting position
> >                  */
> >                 public void setContents(List<Content> contents, int 
> > startPosition){
> >                         // Tells it to set the primary page
> >                         this.setPrimary = true;
>
> >                         // Set the contents
> >                         this.contents = contents;
>
> >                         // Figure out the start position for the finished 
> > update function
> >                         if(this.startContentId != null){
> >                                 for(Content tmp : this.contents){
>
> >                                         if(this.startContentId != null &&
> > this.startContent.equals(tmp.getContentId()))
> >                                                 this.startPosition = 
> > this.contents.indexOf(tmp);
> >                                 }
> >                         }
>
> >                         this.notifyDataSetChanged();
> >                 }
>
> > }
>
> > On Feb 7, 12:13 am, HeneryH <[email protected]> wrote:
>
> > > tatebn, did you ever solve this problem?  I have been going crazy trying 
> > > to
> > > dynamically add views to aviewpagerbased on database items.
>
> > > If I find one more sample with three statically defined views each adding 
> > > a
> > > textview with the index I will go crazy!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to