[] A swipe menu for ListView.

Overview

SwipeMenuListView

Android Arsenal Download

A swipe menu for ListView.

Demo

Screenshot

Usage

Add dependency

dependencies {
    compile 'com.baoyz.swipemenulistview:library:1.3.0'
}

Step 1

  • add SwipeMenuListView in layout xml
<com.baoyz.swipemenulistview.SwipeMenuListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

Step 2

  • create a SwipeMenuCreator to add items.
SwipeMenuCreator creator = new SwipeMenuCreator() {

	@Override
	public void create(SwipeMenu menu) {
		// create "open" item
		SwipeMenuItem openItem = new SwipeMenuItem(
				getApplicationContext());
		// set item background
		openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,
				0xCE)));
		// set item width
		openItem.setWidth(dp2px(90));
		// set item title
		openItem.setTitle("Open");
		// set item title fontsize
		openItem.setTitleSize(18);
		// set item title font color
		openItem.setTitleColor(Color.WHITE);
		// add to menu
		menu.addMenuItem(openItem);

		// create "delete" item
		SwipeMenuItem deleteItem = new SwipeMenuItem(
				getApplicationContext());
		// set item background
		deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
				0x3F, 0x25)));
		// set item width
		deleteItem.setWidth(dp2px(90));
		// set a icon
		deleteItem.setIcon(R.drawable.ic_delete);
		// add to menu
		menu.addMenuItem(deleteItem);
	}
};

// set creator
listView.setMenuCreator(creator);

Step 3

  • listener item click event
listView.setOnMenuItemClickListener(new OnMenuItemClickListener() {
	@Override
	public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
		switch (index) {
		case 0:
			// open
			break;
		case 1:
			// delete
			break;
		}
		// false : close the menu; true : not close the menu
		return false;
	}
});

Swipe directions

	// Right
	mListView.setSwipeDirection(SwipeMenuListView.DIRECTION_RIGHT);
	
	// Left
	mListView.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);

Create Different Menu

  • Use the ViewType of adapter
	class AppAdapter extends BaseAdapter {

		...
		
		@Override
		public int getViewTypeCount() {
			// menu type count
			return 2;
		}
		
		@Override
		public int getItemViewType(int position) {
			// current menu type
			return type;
		}

		...
	}
  • Create different menus depending on the view type
	SwipeMenuCreator creator = new SwipeMenuCreator() {

			@Override
			public void create(SwipeMenu menu) {
				// Create different menus depending on the view type
				switch (menu.getViewType()) {
				case 0:
					// create menu of type 0
					break;
				case 1:
					// create menu of type 1
					break;
				...
				}
			}

		};
  • Demo

Screenshot

Other

  • OnSwipeListener
listView.setOnSwipeListener(new OnSwipeListener() {
			
	@Override
	public void onSwipeStart(int position) {
		// swipe start
	}
	
	@Override
	public void onSwipeEnd(int position) {
		// swipe end
	}
});
  • open menu method for SwipeMenuListView
listView.smoothOpenMenu(position);
  • Open/Close Animation Interpolator
// Close Interpolator
listView.setCloseInterpolator(new BounceInterpolator());
// Open Interpolator
listView.setOpenInterpolator(...);

Screenshot

Comments
  • Question: Can it delete a row?

    Question: Can it delete a row?

    When the list row Swipes, and the menu appears, upon clicking on the delete button, can it remove the current row and/or remove currently displayed data item from the Adapter?

    Or Do we have to handle it manually?

    opened by rinav 5
  • Delete item not working

    Delete item not working

    I am using your SwipeMenuListView backed by a BaseAdapter which has an ArrayList. After removing an item from the ArrayList, I call notifyDataSetChanged(), and find that the View is not updating correctly. It always removes the last item, and so the items displayed are out of sync with the ArrayList.

    I verified it's not my sample code because this works fine if I use a standard ListView. In your Readme it looks like you do have delete items working, so is there a regression?

    opened by javaguy 3
  • Invalid position returned in ArrayAdapter

    Invalid position returned in ArrayAdapter

    Tested versus regular ListView and correct position was returned, but SwipeMenuListView returns invalid position.

    I have an array of 38 objects and using simple getView(int position, View convertView, ViewGroup parent) method to return a custom view.

    Here's log file to show how it works with SwipeMenuListView and regular ListView

    SwipeMenuListView - Invalid position example: 03-14 01:29:43.717 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.718 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.718 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.719 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.720 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 01:29:43.721 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 5 03-14 01:29:43.721 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 6 03-14 01:29:43.721 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 7 03-14 01:29:43.722 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.722 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.723 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.724 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.725 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 01:29:43.726 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 5 03-14 01:29:43.726 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 6 03-14 01:29:43.727 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 7 03-14 01:29:43.727 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.728 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.728 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.729 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.729 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 01:29:43.731 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 5 03-14 01:29:43.731 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 6 03-14 01:29:43.731 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 7 03-14 01:29:43.732 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.732 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.733 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.733 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.734 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 01:29:43.734 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 5 03-14 01:29:43.735 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 6 03-14 01:29:43.735 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 7 03-14 01:29:43.736 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.737 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.738 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.739 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.740 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 01:29:43.740 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 5 03-14 01:29:43.741 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 6 03-14 01:29:43.742 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 7 03-14 01:29:43.748 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.748 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.749 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.749 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.749 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 01:29:43.750 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.750 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.750 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.750 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.751 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.751 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.751 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.752 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3 03-14 01:29:43.752 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 01:29:43.752 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 0 03-14 01:29:43.752 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 1 03-14 01:29:43.753 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 2 03-14 01:29:43.753 3052-3052/com.fedortsyganov.iptest I/Position﹕ -> 3

    ListView - valid position example: 03-14 02:06:58.644 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 4 03-14 02:06:58.660 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 5 03-14 02:06:58.678 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 6 03-14 02:06:58.694 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 7 03-14 02:06:58.694 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 8 03-14 02:06:58.710 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 9 03-14 02:06:58.731 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 10 03-14 02:06:58.732 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 11 03-14 02:06:58.743 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 12 03-14 02:06:58.762 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 13 03-14 02:06:58.777 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 14 03-14 02:06:58.778 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 15 03-14 02:06:58.794 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 16 03-14 02:06:58.811 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 17 03-14 02:06:58.828 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 18 03-14 02:06:58.846 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 19 03-14 02:06:58.846 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 20 03-14 02:06:58.863 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 21 03-14 02:06:58.877 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 22 03-14 02:06:58.894 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 23 03-14 02:06:58.912 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 24 03-14 02:06:58.927 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 25 03-14 02:06:58.929 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 26 03-14 02:06:58.944 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 27 03-14 02:06:58.961 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 28 03-14 02:06:58.977 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 29 03-14 02:06:58.994 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 30 03-14 02:06:59.012 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 31 03-14 02:06:59.028 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 32 03-14 02:06:59.045 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 33 03-14 02:06:59.061 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 34 03-14 02:06:59.077 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 35 03-14 02:06:59.094 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 36 03-14 02:06:59.110 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 37 03-14 02:06:59.128 4842-4842/com.fedortsyganov.iptest I/Position﹕ -> 30

    opened by Fedor-Tsyganov 2
  • Problem in Android 5.0 Lollipop

    Problem in Android 5.0 Lollipop

    at com.baoyz.swipemenulistview.SwipeMenuListView.onTouchEvent(SwipeMenuListView.java:182)

    java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6563) at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4916) at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3398) at android.widget.AbsListView.startScrollIfNeeded(AbsListView.java:3326) at android.widget.AbsListView.onTouchMove(AbsListView.java:3754) at android.widget.AbsListView.onTouchEvent(AbsListView.java:3612) at com.baoyz.swipemenulistview.SwipeMenuListView.onTouchEvent(SwipeMenuListView.java:182) at android.view.View.dispatchTouchEvent(View.java:8388) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2424) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692) at android.app.Activity.dispatchTouchEvent(Activity.java:2739) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2275) at android.view.View.dispatchPointerEvent(View.java:8578) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3578) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3635) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:143) at android.os.Looper.loop(Looper.java:122) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.

    opened by javierpe 1
  • Unnesscary code,开发过程中残留的无用的代码,测试用的代码

    Unnesscary code,开发过程中残留的无用的代码,测试用的代码

    在学习如何设计自定义控件的过程中发现的不必要的代码:

    SwipeMenuView: 没有被使用的对象:private SwipeMenuListView mListView;

    SwipeMenuAdapter: getView()中存在测试用的代码:createMenu(menu); getView()中存在没有被使用的对象:View view = mAdapter.getView(position, layout.getContentView(), parent);

    opened by DevDengChao 0
  • Can't use custom divider

    Can't use custom divider

    I tried to use custom divider in my xml file like:

    <com.baoyz.swipemenulistview.SwipeMenuListView
            android:id="@+id/listView"
            android:layout_alignParentStart="false"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignWithParentIfMissing="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="false"
            android:longClickable="false"
            android:layout_gravity="center"
            android:divider="@drawable/list_divider"/>
    

    and I defined my list_divider in drawable/list_divider but it seems not working. I also tried to change divider color and height in this way:

    <com.baoyz.swipemenulistview.SwipeMenuListView
            android:id="@+id/listView"
            android:divider="@color/colorPrimaryDark"
            android:dividerHeight="2dip"
            android:layout_alignParentStart="false"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignWithParentIfMissing="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="false"
            android:longClickable="false"
            android:layout_gravity="center" />
    

    but both still not working. It is strange since SwipeMenuListView extends Listview. Any clue?

    Thanks

    opened by AndreaScn 0
  • Is this library causing it? android.widget.AbsListView$RecycleBin.getScrapView NullPointerException: Attempt to get length of null array

    Is this library causing it? android.widget.AbsListView$RecycleBin.getScrapView NullPointerException: Attempt to get length of null array

    Please see: https://stackoverflow.com/questions/66681210/android-widget-abslistviewrecyclebin-getscrapview-nullpointerexception-attempt

    Is this being caused this library? Has anyone else experienced it?

    opened by derrickrc 0
  • isGroupSwipable is returning false but still the group is swiping

    isGroupSwipable is returning false but still the group is swiping

    I have a list view i with parent and childs . In isGroupSwipeable i have added a condition it check if it's true then it make it swipeable if not it makes it false. At first it is working fine .But when i scroll through the list from bottom to top . Then those groups become swipeable . But the crazy part about is that when i check isGroupSwipeable for that specific group position, it is returning me false and group is swiping val checkForSwipe = adapter?.isGroupSwipable(groupPostion)

    override fun isGroupSwipable(p0: Int): Boolean { var rem = debt.installments[p0].remainingAmount() if (rem > 0){ return true } else{ return false }

    }
    
    opened by DanyalNaveed 0
  • On Device Resolution change icon resizing..

    On Device Resolution change icon resizing..

    I am using on Samsung S9. When i am switching between the resolution of my device. HD(1480x720), FHD+(2220x1080),WQHD+(2960x1440) icon size of swipe menu changes automatically and create a Height issue.

    HD VIEW

    20200507_141201 FHD VIEW 20200507_141224 QHD VIEW 20200507_141306

    opened by joshisunil-1983 0
Owner
星一
Read the fucking code
星一
Android library to display a ListView whose cells are not rigid but flabby and react to ListView scroll.

FlabbyListView This library is not maintained anymore and there will be no further releases Android library to display a ListView which cells are not

JPARDOGO 762 Nov 23, 2022
Easy to use ListView with pinned sections for Android.

Easy to use ListView with pinned sections for Android 2.1 and higher. Pinned section is a header view which sticks to the top of the list until at lea

Sergej Shafarenka 2.6k Dec 21, 2022
An Android custom ListView and ScrollView with pull to zoom-in.

PullZoomView An Android custom ListView and ScrollView with pull to zoom-in. Features Set ZoomView enable Add HeaderView Custom ZoomView Parallax or N

Frank-Zhu 2.3k Dec 26, 2022
Android widget with pull to refresh for all the views,and support loadMore for ListView , RecyclerView, GridView and SwipeRefreshLayout.

CommonPullToRefresh Android widget with pull to refresh for all the views,and support loadMore for ListView,RecyclerView,GridView and SwipeRefreshLayo

null 1.1k Nov 10, 2022
A ListView with pinned section headers for Android

PinnedHeaderListView This library provides a sectioned ListView with pinned headers. It looks and feels much like the default contacts app does on And

James Smith 665 Nov 29, 2022
A generic, customizable, open source Android ListView implementation that has 'Pull to Refresh' functionality.

Android 'Pull to Refresh' ListView library Demo video: http://www.youtube.com/watch?v=VjmdELnm3GI Project A generic, customizable, open source Android

Erik Wallentinsen 639 Nov 17, 2022
Parallax ScrollView and ListView for Android

Parallax Scrolls Parallax ListView and ScrollView for Android This project includes ScrollView with one or more parallaxed views ListView with paralla

Nir Hartmann 851 Dec 3, 2022
android custom listview,with interaction pattern load more and pull to refresh to load data dinamically

The first thing that i have to say is render thanks to johannilsson because all the part of pull to refresh listview is based in the code of his repos

Fabian Leon 447 Nov 15, 2022
Awesome Listview filter functionality in Android.

About Awesome Listview filter functionality in Android. See it in Action: https://www.youtube.com/watch?v=RO54U1ES5CA Listview with beautiful transpar

Bhavya  Mehta 446 Nov 20, 2022
Bringing extended scrolling features to Android's native ListView and ExpandableListView.

About QuickScroll QuickScroll is a library aimed at creating similar scrolling experiences to the native Contacts app's People view. It has the same s

Andras Kindler 461 Nov 11, 2022
Android ListView with sticky headers

DEPRECATED HeaderListView is deprecated. No new development will be taking place. Quickstart Import the HeaderListView module in your Android Studio p

Applidium 314 Nov 10, 2022
Simple ListView based Android AccordionView

Android Accordion View Example git pull import to eclipse properties->android uncheck is library run as android application See main.xml. Screenshot L

Maciej Lopacinski 164 Nov 28, 2022
An easy to use Drag & Drop List for Android. Direct replacement of the android ListView.

DragNDropListView DragNDropListView is a direct replacement for the stock Android ListView. If you know how to use ListView, you already know how to u

null 187 Dec 22, 2022
Android ListView that implements the QuickReturn UI pattern. Written from scratch with focus on performance.

QuickReturn Android ListView that implements the QuickReturn UI pattern. Written from scratch with focus on performance. Demo Usage In your build.grad

Felipe Lima 191 Nov 25, 2022
AssignmentListView is an Android ListView widget which calculate image loading times.

AssignmentListView is an Android ListView widget which calculate image loading times.

null 5 Sep 9, 2022
[] A swipe menu for ListView.

SwipeMenuListView A swipe menu for ListView. Demo Usage Add dependency dependencies { compile 'com.baoyz.swipemenulistview:library:1.3.0' } Step 1

星一 3.5k Dec 16, 2022
[] A swipe menu for ListView.

SwipeMenuListView A swipe menu for ListView. Demo Usage Add dependency dependencies { compile 'com.baoyz.swipemenulistview:library:1.3.0' } Step 1

星一 3.5k Dec 16, 2022
Android library to display a ListView whose cells are not rigid but flabby and react to ListView scroll.

FlabbyListView This library is not maintained anymore and there will be no further releases Android library to display a ListView which cells are not

JPARDOGO 762 Nov 23, 2022
HorizontalListView is an Android ListView widget which scrolls in a horizontal manner (in contrast with the SDK-provided ListView which scrolls vertically).

HorizontalListView HorizontalListView is an Android ListView widget which scrolls in a horizontal manner (in contrast with the SDK-provided ListView w

MeetMe 722 Nov 10, 2022
Android library to display a ListView whose cells are not rigid but flabby and react to ListView scroll.

FlabbyListView This library is not maintained anymore and there will be no further releases Android library to display a ListView which cells are not

JPARDOGO 762 Nov 23, 2022