ListBuddies alternatives and similar packages
Based on the "ListView/ScrollView Widget" category.
Alternatively, view ListBuddies alternatives based on common mentions on social networks and blogs.
-
Android-ObservableScrollView
Android library to observe scroll events on scrollable views. -
StickyListHeaders
An android library for section headers that stick to the top -
SwipeMenuListView
[DEPRECATED] A swipe menu for ListView. -
Pull-to-Refresh.Rentals-Android
Phoenix Pull-to-Refresh -
pinned-section-listview
Easy to use ListView with pinned sections for Android. -
android-pulltorefresh
DEPRECATED This project aims to provide a reusable pull to refresh widget for Android. -
Android-SlideExpandableListView
A better ExpandableListView, with animated expandable views for each list item -
PullZoomView
An Android custom ListView and ScrollView with pull to zoom-in. -
XListView-Android
ListView supports pull refresh and pull up to load more feature. -
Android-HorizontalListView
HorizontalListView is an Android ListView widget which scrolls in a horizontal manner (in contrast with the SDK-provided ListView which scrolls vertically). -
CommonPullToRefresh
Android widget with pull to refresh for all the views,and support loadMore for ListView , RecyclerView, GridView and SwipeRefreshLayout. -
StickyScrollViewItems
A small android library for tagging views inside a ScrollView as "sticky" making them stick to the top of the scroll container until a new sticky view comes and takes it's place -
HorizontalVariableListView
Horizontal list view for Android which allows variable items widths -
PinnedHeaderListView
A ListView with pinned section headers for Android -
PullToRefresh-ListView
A generic, customizable, open source Android ListView implementation that has 'Pull to Refresh' functionality. -
StikkyHeader
This is a very simple library for Android that allows you to stick an header to a scrollable view and easily apply animation to it -
ParallaxScroll
Parallax ScrollView and ListView for Android -
PagedHeadListView
Android boosted ListView supporting paginated header with a new material page indicator. -
ParallaxListView
A Android ListView Demo with a parallax effect header like Path. -
FlabbyListView
Android library to display a ListView whose cells are not rigid but flabby and react to ListView scroll. -
android-pulltorefresh-and-loadmore
android custom listview,with interaction pattern load more and pull to refresh to load data dinamically -
LinearListView
Android library that allows you to bind a LinearLayout with a ListAdapter. -
ListviewFilter
Awesome Listview filter functionality in Android. -
quickscroll
[Development stopped in 2014. Unfinished and not stable - not recommended to use.] Bringing extended scrolling features to Android's native ListView and ExpandableListView. -
FloatingGroupExpandableListView
An open source Android library that provides a floating group view at the top of the ExpandableListView -
android-accordion-view
Simple ListView based Android AccordionView -
Android-Tiling-ScrollView
A tiling scrollview to display large picture (similar to iOS "CATiledLayer") -
DragNDropList
An easy to use Drag & Drop List for Android. Direct replacement of the android ListView. -
QuickReturn
Android ListView that implements the QuickReturn UI pattern. Written from scratch with focus on performance.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ListBuddies or a related project?
README
ListBuddies
This library is not maintained anymore and there will be no further releases
Android library of a pair of auto-scroll circular parallax ListViews like the ones on the expedia app home page.
A video example of this library is on this youtube video.
I would appreciate any kind of help to improve this library. Thanks
Usage
You must declare the following view in your xml layout:
<com.jpardogo.listbuddies.lib.views.ListBuddiesLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listbuddies"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
There are a bunch of optional custom attributes:
<com.jpardogo.listbuddies.lib.views.ListBuddiesLayout
xmlns:listbuddies="http://schemas.android.com/apk/res-auto"
android:id="@+id/listbuddies"
android:layout_width="match_parent"
android:layout_height="match_parent"
listbuddies:speed="2"
listbuddies:gap="@dimen/gap"
listbuddies:gapColor="@color/frame"
listbuddies:listsDivider="@drawable/divider"
listbuddies:listsDividerHeight="@dimen/divider_height"
listbuddies:autoScrollFaster="right"
listbuddies:scrollFaster="left"/>
If you prefere to create it dynamically use:
ListBuddiesLayout listBuddies = new ListBuddiesLayout(this);
listBuddies.setGap(mMarginDefault)
.setSpeed(ListBuddiesLayout.DEFAULT_SPEED)
.setDividerHeight(mMarginDefault)
.setGapColor(getResources().getColor(R.color.frame))
.setAutoScrollFaster(mScrollConfig[ScrollConfigOptions.RIGHT.getConfigValue()])
.setManualScrollFaster(mScrollConfig[ScrollConfigOptions.LEFT.getConfigValue()])
.setDivider(getResources().getDrawable(R.drawable.divider));
((FrameLayout)findViewById(R.id.<container_id>)).addView(listBuddies)
Attributes
speed
: Sets the auto scroll speed (integer). 0 - no autoScrollgap
: Space between the lists, the default gap is 3dp (@dimen/default_margin_between_lists).gapColor
: Defines the color of the gap, if it is not set the gap is transparentlistDivider
: Defines the lists dividers.listsDividerHeight
: Divider´s height.autoScrollFaster
: Indicate the ListView that will be faster on the parrallax effect during autoScroll. right/left.scrollFaster
: Indicate the ListView that will be faster on the parrallax effect during manual scroll. right/left.
This LinearLayout
contains two ListViews.
So we need to set the adapters of the ListViews calling listBuddies.setAdapters(adapter1,adapter2)
.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ListBuddiesLayout listBuddies = (ListBuddiesLayout) rootView.findViewById(R.id.listbuddies);
CircularAdapter adapter = new CircularAdapter(getActivity(), getResources().getDimensionPixelSize(R.dimen.image_size1), ImagesUrls.imageUrls_left);
CircularAdapter adapter2 = new CircularAdapter(getActivity(), getResources().getDimensionPixelSize(R.dimen.image_size2), ImagesUrls.imageUrls_right);
listBuddies.setAdapters(adapter, adapter2);
return rootView;
}
Both adapters need to be extend from CircularLoopAdapter
. With minimal differences from a BaseAdapter.
public class CircularAdapter extends CircularLoopAdapter
The first different is that the adapter needs to @Override getCircularCount
instead of getCount
.
@Override
protected int getCircularCount() {
return mItems.size();
}
and instead of get the value of position
to get the item from the list. We need to get the position calling getCircularPosition(position)
, like this:
@Override
public String getItem(int position) {
return mItems.get(getCircularPosition(position));
}
To receive the callback for the click on the items of the lists, Just call setOnItemClickListener
on your ListBuddiesLayout
view and pass and instance of OnBuddyItemClickListener
.
public class ListBuddiesFragment extends Fragment implements ListBuddiesLayout.OnBuddyItemClickListener
....
listBuddies.setOnItemClickListener(this);
You will receive the OnItemClick callback in onBuddyItemClicked
which is similar to onItemClick
but indicate with the parameter int buddy
in which of the lists the item clicked is contained.
if the value of buddy
is 0 the item is on the first list (left) and if it is 1 is on the second list (right).
@Override
public void onBuddyItemClicked(AdapterView<?> parent, View view, int buddy, int position, long id) {
//int buddy indicate the list where the item is contain.
// 0 - left
// 1 - right
}
In order to receive touch feedback for the click of the list items, we need to have as a parent of our list item view one of the following layouts:
com.jpardogo.listbuddies.lib.views.containers.FrameLayoutFeedback
com.jpardogo.listbuddies.lib.views.containers.RelativeLayoutFeedBack
com.jpardogo.listbuddies.lib.views.containers.LinearLayoutFeedBack
This layouts have selectorColor
property to define the color of the selector for the feedback.
<com.jpardogo.listbuddies.lib.views.containers.FrameLayoutFeedback
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:listbuddies="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:layout_width="match_parent"
listbuddies:selectorColor="@color/blue">
.....
The color will need some transparency in order to act as the ListView selector:
<color name="blue">#7733B5E5</color>
Although it is just optional.
Including in your project
You can either add the library to your application as a library project or add the following dependency to your build.gradle:
dependencies {
compile 'com.jpardogo.listbuddies:library:(latest version)'
}
Developed By
Javier Pardo de Santayana Gómez - [email protected]
License
Copyright 2013 Javier Pardo de Santayana Gómez
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the ListBuddies README section above
are relevant to that project's source code only.