How can I show a button when all views are viewed in viewpager?

不羁的心 提交于 2020-01-07 03:12:09

问题


Right now I have a save button that I want to show only if all the views inside a viewpager are shown. That means that when the user swipes between views and have seen all views inside a viewpager, then show a save button.

I want to show the save button on every view when they have seen all views hereby after.

The trouble I am having is how to set up the logic. I started out with setting the save button invisible until the last view of the viewpager. On the last view of the viewpager, show the save button. But the problem is when the user goes to the last view (there's a save button) and then goes back to a previous view, the save button is gone.

So, I was wondering how can I show the save button permanently on all views after the user has seen all views?

Here's what I have so far:

I have this snippet inside my InstantiateItem() :

if(isViewed)
{
 save_button.setVisibility(Button.VISIBLE);
 System.out.println("Is this called? isViewed = true");


 }else if (position == numberOfPages.size()-1) {

 isViewed = true;
 save_button.setVisibility(Button.VISIBLE);
 }

where

@Override
public void onPageSelected(int position) {
isViewed = true;
}

EDIT:

I tried the following solutions but with no luck.

Button save_button = (Button) findViewById(R.id.save);
                    if(isViewed[position])
                    {
                        save_button.setVisibility(Button.VISIBLE);
                    }
                    if (position == numberOfPages.length-1 && !isViewed[position]) {
                        isViewed[position] = true;
                        save_button.setVisibility(Button.VISIBLE);
                    }
                    isViewed[position] =true;

And

isViewed[position] = true;
                    if (isViewed[position] == isViewed[numberOfPages.length-1]) {
                        save_button.setVisibility(Button.VISIBLE);
                    }
                        if (isViewed[position]) {
                            save_button.setVisibility(Button.VISIBLE);
                        } else {
                            save_button.setVisibility(Button.INVISIBLE);
                        }

回答1:


In your onPageSelected, do the following

if(isViewed)
{
 save_button.setVisibility(Button.VISIBLE);
 }
 if (position == numberOfPages.size()-1) {
 isViewed = true;
 save_button.setVisibility(Button.VISIBLE);
 }

Note the above are two seperate if statements.

Make your isViewed global and default to false.




回答2:


boolean []isViewed = new boolean[noOfPages.size()];

 @Override
 public void onPageSelected(int position) {
        if(isViewed[position])
            {
               save_button.setVisibility(Button.VISIBLE); 
            }
        else  {
               save_button.setVisibility(Button.GONE); 
            }
      isViewed[position] = true;
 } 


来源:https://stackoverflow.com/questions/26836706/how-can-i-show-a-button-when-all-views-are-viewed-in-viewpager

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!