Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

##Android-CustomSwipeListView

Android-CustomSwipeListView that inherited from Listview and BaseAdapter supports for swiping item from right or left .

##Feature

1.Support the custom menu in the menu which is been shown by scrolling item to left.

2.Support delete item from the listview by scrolling item to right.

3.Support undo the event that is deleting item .

4.Support set the animation execution time that is been executed by swiping item from right or left.

5.Support set the delta which determines whether to swipe item from right or left .

6.Support set the flag which determines whether to enable to swipe item from right or left .

7.Easy to integrate to your app.

##Gradle Dependency

compile 'com.xyczero:customswipelistview:1.0.1@aar'

##Maven Dependency

<dependency>
<groupId>com.xyczero</groupId>
<artifactId>customswipelistview</artifactId>
<version>1.0.1</version>
<type>aar</type>
</dependency>

##ScreenShot

screenshot

##Usage

It is very similar to the normal use of the ListView and BaseAdapter.

Firstly,you need to inherite the CustomSwipeBaseAdapter for your own adapter. The CustomSwipeListview can use it directly.

publicclassTestActivityextendsActivity {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
}
publicclassTestAdapterextendsCustomSwipeBaseAdapter<TestModel> {
... ...
}

Secondly, you need to implement some abstract function and interface that is in CustomSwipeListview and CustomSwipeBaseAdapter.

//Bind an existing item view to the data pointed to by position.@OverridepublicvoidbindItemView(Viewview, Contextcontext, intposition) {
TextViewtextViewTitle = (TextView) view.findViewById(R.id.test_title);
textViewTitle.setText(getAdapterData().get(position).getTestTitle());
... ...
}
//Bind an existing swipe left view to the data pointed to by position.@OverridepublicvoidbindSwipeLeftView(Viewview, finalContextcontext,finalintposition) {
ButtonbuttonFb = (Button) view.findViewById(R.id.test_fb_btn);
buttonFb.setOnClickListener(newOnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,"...",Toast.LENGTH_SHORT).show();
}
});
... ...
}
//Makes a new item view to hold the data pointed to by position.@OverridepublicViewnewItemView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_item_view, parent, false);
returnmView;
}
//Makes a new swipe left view hold the data pointed to by position.@OverridepublicViewnewSwipeLeftView(Contextcontext, intposition, ViewGroupparent) {
finalViewmView = mLayout.inflate(R.layout.test_listview_swipe_view, parent, false);
returnmView;
}

Then you can set some properties for what you want in the activity.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateCustomSwipeListViewmTestListView;
privateTestAdaptermTestAdapter;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
//set remove item listenermTestListView.setRemoveItemCustomSwipeListener(this);
//set whether enable to swipemTestListView.setSwipeItemLeftEnable(true);
mTestListView.setSwipeItemRightEnable(true);
//set animation execution time in millisecondmTestListView.setAnimationLeftDuration(300);
mTestListView.setAnimationRightDuration(300);
//set deltaX that triggers swiping item in dipmTestListView.setSwipeItemLeftTriggerDeltaX(50);
mTestListView.setSwipeItemRightTriggerDeltaX(50);
... ...
}
@OverridepublicvoidonRemoveItemListener(intselectedPostion) {
TestModelmodel = mTestAdapter.removeItemByPosition(selectedPostion);
//set undoDialog message to showmUndoDialog.setMessage("Delete" + model.getTestTitle() + ".").showUndoDialog();
}
... ...
}

If you need to undo the deleting item,you just some steps.

publicclassTestActivityextendsActivityimplementsRemoveItemCustomSwipeListener {
privateTestAdaptermTestAdapter;
privateCustomSwipeUndoDialogmUndoDialog;
... ...
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
... ...
mTestAdapter = newTestAdapter(this, mTestModels);
//UndoDialog ConstructormUndoDialog = newCustomSwipeUndoDialog(this);
//set UndoActionListener,the listener is been implemented in CustomSwipeBaseAdapter.mUndoDialog.setUndoActionListener(mTestAdapter);
... ...
}
... ...
}

For more detatls,please see the demo.Thank you.

##Limitations

1.You must ensure that add or set data to the adapter by using addAdapterData(...) and setAdapterData(...) in CustomSwipeBaseAdapter.

2.You must ensure that the height of the CustemListview is a certain value(like wrap_content is forbidden).

##Demo Download

Download here

##Todo List

1.add transition effect when swping left the item

2.push to Maven and Gradle

3.refactor the CustomSwipeBaseAdapter.class for more effective

##License

Apache 2

##Contact and Help

Please contact me if there is any problem when using the library.

Email: xyczero@sina.com

Blog: http://www.xyczero.com

Wechat: xyczero

About

An android custom SwipeListview that supports customizable left wipe menu list and remving item by swiping right.

Resources

Stars

70 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages