Search code examples
androidandroid-viewpager

How to validate all screens in view pager at last page for all screens edittext?


I want to set validation to the last screen that all swiped screens data will be inserted by the user or not using viewpager.

pageradapter class

public class MyViewPagerAdapter extends PagerAdapter {
    private LayoutInflater layoutInflater;
    private Context context;
    private int[] layouts;

    public MyViewPagerAdapter(Context context,int[] layouts) {
        this.context=context;
        this.layouts=layouts;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View view = layoutInflater.inflate(layouts[position], container, false);
        container.addView(view);

        return view;
    }

    @Override
    public int getCount() {
        return layouts.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object obj) {
        return view == obj;
    }


    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        View view = (View) object;
        container.removeView(view);
    }

adding layouts to viewpager in activities oncreate method

layouts = new int[]{
                R.layout.welcome_side1,
                R.layout.welcome_side2,
                R.layout.welcome_side3,
                R.layout.welcome_side4};

        // making notification bar transparent
        changeStatusBarColor();

        myViewPagerAdapter = new MyViewPagerAdapter(context,layouts);
        viewPager.setAdapter(myViewPagerAdapter);
        viewPager.addOnPageChangeListener(viewPagerPageChangeListener);

button click in activity i want to validate here about my first screen edittext

btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int current = getItem(+1);
                if (current < layouts.length) {
                    // move to next screen
                    viewPager.setCurrentItem(current);
                } else {
                    //i want to validate here about my all layout files empty fields or user insert correct valuers.
                }
            }
        });

my all layout screens are like that I want to validate edit text has value or not and jump to particular screens using page adapter.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/bg_screen1">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linearlayout1"
        android:layout_marginBottom="40dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name" />
</RelativeLayout>

Solution

  • Try to do it like this

    btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int current = getItem(+1);
                if (current < layouts.length) {
                    // move to next screen
                    viewPager.setCurrentItem(current);
                } else {
                    for (int i = 0; i < viewPager.getChildCount(); i++) {
                       View v = viewPager.getChildAt(i);
                       EditText ed = v.findViewById(R.id.editText);
                       if (ed != null) {
                           if (ed.getText() == null || ed.getText().toString().equals("")) {
                                 // here text is empty, do something...
                               return;
                           }
                        }
                    }
                    // here, all edittext were edited, do something
                }
            }
        });