- In my application, I added Swipe to reject the item along with the Undo option in Listview.
Requried:
- I want to add section headers from the server to ListView Like Group1, Group2, etc.
Code for Swipe with Cancel . Please help me fulfill my requirements. Link to which I referred
ListviewActivity.class
package com.swipe.delete; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.hudomju.swipe.SwipeToDismissTouchListener; import com.hudomju.swipe.adapter.ListViewAdapter; import java.util.ArrayList; import java.util.List; import static android.widget.Toast.LENGTH_SHORT; public class ListViewActivity extends Activity { private static final int TIME_TO_AUTOMATICALLY_DISMISS_ITEM = 3000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list_view_activity); init((ListView) findViewById(R.id.list_view)); } private void init(ListView listView) { final MyBaseAdapter adapter = new MyBaseAdapter(); listView.setAdapter(adapter); final SwipeToDismissTouchListener<ListViewAdapter> touchListener = new SwipeToDismissTouchListener<>( new ListViewAdapter(listView), new SwipeToDismissTouchListener.DismissCallbacks<ListViewAdapter>() { @Override public boolean canDismiss(int position) { return true; } @Override public void onPendingDismiss(ListViewAdapter recyclerView, int position) { } @Override public void onDismiss(ListViewAdapter view, int position) { adapter.remove(position); } }); touchListener.setDismissDelay(TIME_TO_AUTOMATICALLY_DISMISS_ITEM); listView.setOnTouchListener(touchListener);
SwipeToDismissTouchListener.class
package com.swipe.Delete; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.graphics.Rect; import android.os.Handler; import android.support.annotation.NonNull; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListView; public class SwipeToDismissTouchListener<SomeCollectionView extends ViewAdapter> implements View.OnTouchListener { // Cached ViewConfiguration and system-wide constant values private final int mSlop; private final int mMinFlingVelocity; private final int mMaxFlingVelocity; private final long mAnimationTime; // Fixed properties private final SomeCollectionView mRecyclerView; private final DismissCallbacks<SomeCollectionView> mCallbacks; private int mViewWidth = 1; // 1 and not 0 to prevent dividing by zero // Transient properties private PendingDismissData mPendingDismiss; private float mDownX; private float mDownY; private boolean mSwiping; private int mSwipingSlop; private VelocityTracker mVelocityTracker; private int mDownPosition; private RowContainer mRowContainer; private boolean mPaused; // Handler to dismiss pending items after a delay private final Handler mHandler; private final Runnable mDismissRunnable = new Runnable() { @Override public void run() { processPendingDismisses(); } }; private long mDismissDelayMillis = -1; // negative to disable automatic dismissing public class RowContainer { final View container; final View dataContainer; final View undoContainer; boolean dataContainerHasBeenDismissed; public RowContainer(ViewGroup container) { this.container = container; dataContainer = container.getChildAt(0); undoContainer = container.getChildAt(1); dataContainerHasBeenDismissed = false; } View getCurrentSwipingView() { return dataContainerHasBeenDismissed ? undoContainer: dataContainer; } } /** * The callback interface used by {@link SwipeToDismissTouchListener} to inform its client * about a successful dismissal of one or more list item positions. */ public interface DismissCallbacks<SomeCollectionView extends ViewAdapter> { /** * Called to determine whether the given position can be dismissed. */ boolean canDismiss(int position); /** * Called when an item is swiped away by the user and the undo layout is completely visible. * Do NOT remove the list item yet, that should be done in {
android listview swipe-gesture
Kumar
source share