Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4590164
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T22:12:28+00:00 2026-05-21T22:12:28+00:00

I have created an Activity that shows a listview and on swipe action another

  • 0

I have created an Activity that shows a listview and on swipe action another list is shown using ViewFlipper. The code is attached below:

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.ViewFlipper;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {
    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;
    private GestureDetector gestureDetector;
    View.OnTouchListener gestureListener;
    private Animation slideLeftIn;
    private Animation slideLeftOut;
    private Animation slideRightIn;
    private Animation slideRightOut;
    private ViewFlipper viewFlipper;
    private ListView lv;
    private String[] city = { "Indore", "Bhopal", "Khargone", "Ujjain",
        "Nasik", "Pune", "Delhi", "Mumbai", "Noida", "Hyderabad",
        "Banglore", "Ajmer", "Goa", "Jaipur", "Nagpur", "" };
    private String[] country = { "India", "Bhutan", "Kuwait", "USA", };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        lv = (ListView) findViewById(R.id.List01);
        ListView lv2 = (ListView) findViewById(R.id.List02);

        viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
        slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
        slideLeftOut = AnimationUtils
                .loadAnimation(this, R.anim.slide_left_out);
        slideRightIn = AnimationUtils
                .loadAnimation(this, R.anim.slide_right_in);
        slideRightOut = AnimationUtils.loadAnimation(this,
                R.anim.slide_right_out);

        gestureDetector = new GestureDetector(new MyGestureDetector());
        gestureListener = new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        };
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, city));
        lv2.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, country));
        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView arg0, View view, int position,
                    long id) {
                // user clicked a list item, make it "selected"
                Toast.makeText(getBaseContext(), "Item Clicked",
                        Toast.LENGTH_SHORT).show();
                // selectedAdapter.setSelectedPosition(position);
            }
        });
        lv2.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView arg0, View view, int position,
                    long id) {
                // user clicked a list item, make it "selected"
                Toast.makeText(getBaseContext(), "Item List2 Clicked",
                        Toast.LENGTH_SHORT).show();
                // selectedAdapter.setSelectedPosition(position);
            }
        });
    }

    class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            try {
                if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                    return false;
                // right to left swipe
                if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    viewFlipper.setInAnimation(slideLeftIn);
                    viewFlipper.setOutAnimation(slideLeftOut);
                    viewFlipper.showNext();
                } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    viewFlipper.setInAnimation(slideRightIn);
                    viewFlipper.setOutAnimation(slideRightOut);
                    viewFlipper.showPrevious();
                }
            } catch (Exception e) {
                // nothing
            }
            return false;
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (gestureDetector.onTouchEvent(event))
            return true;
        else
            return false;
    }
}

It’s working f9…

But when I place this within the another tab activity with the following code The View Flipper is not working when placed as content(intent) in tab of another tabactivity (AppStart)

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.TabHost;

public class AppStart extends TabActivity {
    /** Called when the activity is first created. */
    static Drawable myImage;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Resources res = getResources();
        myImage = res.getDrawable(R.drawable.club);

        TabHost tabs = getTabHost();
        tabs.setup();
        TabHost.TabSpec spec = tabs.newTabSpec(null);

                Intent i = new Intent().setClass(this, MainActivity.class);
                spec = tabs.newTabSpec(null);
        spec.setContent(i);
        spec.setIndicator("Tab");
        tabs.addTab(spec);

    }

}

The Layout is as follows:
main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/flipper" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <ListView android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:id="@+id/List01"/>
    </LinearLayout>

    <LinearLayout android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <ListView  android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:id="@+id/List02" />
    </LinearLayout>

</ViewFlipper>

And main.xml as shown below:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:orientation="vertical"
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <TabWidget android:id="@android:id/tabs"
            android:layout_width="fill_parent" android:layout_height="wrap_content" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent">


        </FrameLayout>
    </LinearLayout>
</TabHost>

Please suggest why the swipe gesture is not working when the same activity is placed in tab.

Thank You

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T22:12:29+00:00Added an answer on May 21, 2026 at 10:12 pm
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.GestureDetector;
    import android.view.GestureDetector.SimpleOnGestureListener;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    import android.widget.ViewFlipper;
    import android.widget.AdapterView.OnItemClickListener;
    
    public class MainActivity extends Activity {
    
        private static final int SWIPE_MIN_DISTANCE = 120;
        private static final int SWIPE_MAX_OFF_PATH = 250;
        private static final int SWIPE_THRESHOLD_VELOCITY = 200;
    
        private GestureDetector gestureDetector;
        View.OnTouchListener gestureListener;
    
        private Animation slideLeftIn;
        private Animation slideLeftOut;
    
        private Animation slideRightIn;
        private Animation slideRightOut;
        private ViewFlipper viewFlipper;
        private ListView lv;
    
        private String[] city = {
            "Indore", "Bhopal", "Khargone", "Ujjain",
                "Nasik", "Pune", "Delhi", "Mumbai", "Noida", "Hyderabad",
                "Banglore", "Ajmer", "Goa", "Jaipur", "Nagpur", ""
        };
    
        private String[] country = {
            "India", "Bhutan", "Kuwait", "USA",
        };
    
    
        @
        Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_layout);
            lv = (ListView) findViewById(R.id.List01);
            ListView lv2 = (ListView) findViewById(R.id.List02);
    
            viewFlipper = (ViewFlipper) findViewById(R.id.flipper);
            slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
            slideLeftOut = AnimationUtils
                .loadAnimation(this, R.anim.slide_left_out);
            slideRightIn = AnimationUtils
                .loadAnimation(this, R.anim.slide_right_in);
            slideRightOut = AnimationUtils.loadAnimation(this,
                R.anim.slide_right_out);
    
            ActivitySwipeDetector activitySwipeDetector = new ActivitySwipeDetector(
                this);
    
            //View on which gesture should function This is image view at bottom of listView on which flip gesture is performed.
    
            flipBarBottom.setOnTouchListener(activitySwipeDetector);
    
            lv.setAdapter(new ArrayAdapter < String > (this,
                android.R.layout.simple_list_item_1, city));
            lv2.setAdapter(new ArrayAdapter < String > (this,
                android.R.layout.simple_list_item_1, country));
            lv.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView arg0, View view, int position,
                    long id) {
                    // user clicked a list item, make it "selected"
                    Toast.makeText(getBaseContext(), "Item Clicked",
                        Toast.LENGTH_SHORT).show();
                    // selectedAdapter.setSelectedPosition(position);
                }
            });
    
            lv2.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView arg0, View view, int position,
                    long id) {
                    // user clicked a list item, make it "selected"
                    Toast.makeText(getBaseContext(), "Item List2 Clicked",
                        Toast.LENGTH_SHORT).show();
                    // selectedAdapter.setSelectedPosition(position);
                }
            });
        }
    
        public class ActivitySwipeDetector implements View.OnTouchListener {
    
            static final String logTag = "ActivitySwipeDetector";
            private Activity activity;
            static final int MIN_DISTANCE = 100;
            private float downX, downY, upX, upY;
    
            public ActivitySwipeDetector(Activity activity) {
                this.activity = activity;
            }
    
            public void onRightToLeftSwipe() {
                Log.i(logTag, "RightToLeftSwipe!");
                // activity.doSomething();
                viewFlipper.setInAnimation(slideLeftIn);
                viewFlipper.setOutAnimation(slideLeftOut);
                viewFlipper.showNext();
                flipBarBottom.setBackgroundResource(R.drawable.flipstatus01);
            }
    
            public void onLeftToRightSwipe() {
                Log.i(logTag, "LeftToRightSwipe!");
                viewFlipper.setInAnimation(slideRightIn);
                viewFlipper.setOutAnimation(slideRightOut);
                viewFlipper.showPrevious();
                flipBarBottom.setBackgroundResource(R.drawable.flipstatus02);
                // activity.doSomething();
            }
    
            public void onTopToBottomSwipe() {
                Log.i(logTag, "onTopToBottomSwipe!");
                // activity.doSomething();
            }
    
            public void onBottomToTopSwipe() {
                Log.i(logTag, "onBottomToTopSwipe!");
                // activity.doSomething();
            }
    
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    {
                        downX = event.getX();
                        downY = event.getY();
                        return true;
                    }
                case MotionEvent.ACTION_UP:
                    {
                        upX = event.getX();
                        upY = event.getY();
    
                        float deltaX = downX - upX;
                        float deltaY = downY - upY;
    
                        // swipe horizontal?
                        if (Math.abs(deltaX) > MIN_DISTANCE) {
                            // left or right
                            if (deltaX < 0) {
                                this.onLeftToRightSwipe();
                                return true;
                            }
                            if (deltaX > 0) {
                                this.onRightToLeftSwipe();
                                return true;
                            }
                        } else {
                            Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
                        }
                        // swipe vertical?
                        if (Math.abs(deltaY) > MIN_DISTANCE) {
                            // top or down
                            if (deltaY < 0) {
                                this.onTopToBottomSwipe();
                                return true;
                            }
                            if (deltaY > 0) {
                                this.onBottomToTopSwipe();
                                return true;
                            }
                        } else {
                            Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
                        }
    
                        return true;
                    }
                }
                return false;
            }
    
        }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have created a custom workflow activity that copies attachments from a case to
I am trying to display ListView . I have created one activity , in
I have created an activity which sends a number of notifications to status bar.
I have created an activity called viewActivity. It displays the shared files and folders
I have created an activity implementing on touch listener and onclick listener . Both
I have an application and every new created activity will start an async task
I created one simple list view. i have two list view, my 1st list
I want to use a list view and I have created my own layout
I have a ListView in a ListActivity that's bound to some data. I have
I have a list activity, and I chose to manually add the first item

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.