I have a list view. On click of an item a detailed view for the item is open. This layout has many widgets like text view, ImageView Buttons
etc. Now I want to
If I understand you correctly you simply need to use a gesture listener and then call the method you use to populate all the text views and imageviews you have with the next instance of information.
I found this example to be very useful when I was learning about gesture recognition.
First add the gesture listener to your public class myClass
import android.widget.Toast;
public class myClass extends Activity implements OnGestureListener {
Then the following goes right afterwards so that we can listen for each touch event.
private static final int SWIPE_MIN_DISTANCE = 6; //120;
private static final int SWIPE_MAX_OFF_PATH = 125; //250;
private static final int SWIPE_THRESHOLD_VELOCITY = 100; //200;
private GestureDetector gestureScanner;@
Override
public boolean onTouchEvent(MotionEvent me) {
return gestureScanner.onTouchEvent(me);
}
//@Override
public boolean onDown(MotionEvent e) {
//viewA.setText("-" + "DOWN" + "-");
return true;
}
//@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) {
Toast.makeText(getApplicationContext(), "Left Swipe", Toast.LENGTH_SHORT).show();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Right Swipe", Toast.LENGTH_SHORT).show();
} else if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Swipe up", Toast.LENGTH_SHORT).show();
} else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getApplicationContext(), "Swipe down", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
// nothing
}
return true;
}@
Override
public void onLongPress(MotionEvent e) {
Toast mToast = Toast.makeText(getApplicationContext(), "Long Press", Toast.LENGTH_SHORT);
mToast.show();
}
//@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//viewA.setText("-" + "SCROLL" + "-");
return true;
}
//@Override
public void onShowPress(MotionEvent e) {
//viewA.setText("-" + "SHOW PRESS" + "-");
} //@Override
public boolean onSingleTapUp(MotionEvent e) {
Toast mToast = Toast.makeText(getApplicationContext(), "Single Tap", Toast.LENGTH_SHORT);
mToast.show();
return true;
}
You can put the methods you use to call the previous or next instance inside the relevant listener where the toast is.
You can adjust the sensotivity of the swipes by changing these variables
private static final int SWIPE_MIN_DISTANCE = 6; //120;
private static final int SWIPE_MAX_OFF_PATH = 125; //250;
private static final int SWIPE_THRESHOLD_VELOCITY = 100; //200;
I hope this helps out.
Edit:
Sorry for the mix up, your onCreate should include gestureScanner = new GestureDetector(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.product_details);
setContent();
gestureScanner = new GestureDetector(this);
}
That should get it working except for the visual effect. You can experiment with using a ScrollView to help with the slide.