• Stars
    star
    191
  • Rank 195,657 (Top 4 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 10 years ago
  • Updated over 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android ListView that implements the QuickReturn UI pattern. Written from scratch with focus on performance.

QuickReturn

Android Arsenal

Android ListView that implements the QuickReturn UI pattern. Written from scratch with focus on performance.

Demo

video thumbnail

Usage

In your build.gradle file:

dependencies {
    // ...
    compile 'com.felipecsl.quickreturn:library:1.5.1'
}

In your activity class:

private ListView listView;
private ArrayAdapter<String> adapter;
private QuickReturnAttacher quickReturnAttacher;
private TextView quickReturnTarget;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    // your listView :)
    listView = (ListView) findViewById(R.id.listView);

    // the quick return target view to be hidden/displayed
    quickReturnTarget = (TextView) findViewById(R.id.quickReturnTarget);

    // your inner adapter
    adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);

    // Wrap your adapter with QuickReturnAdapter
    listView.setAdapter(new QuickReturnAdapter(adapter));

    // Attach a QuickReturnAttacher, which takes care of all of the hide/show functionality.
    quickReturnAttacher = QuickReturnAttacher.forView(listView);

    // Add a quick return targetView to the attacher.
    // You can pass a position argument (POSITION_TOP or POSITION_BOTTOM).
    // You can also optionally pass the size of the target view, which will be used to 
    // offset the list height, preventing it from hiding content behind the target view.
    quickReturnAttacher.addTargetView(quickReturnTarget, QuickReturnTargetView.POSITION_TOP, 50);

    // If you need to add an OnScrollListener to the listView, this is the correct
    // way to do so.
    // You have to add it on the QuickReturnAttacher instead
    // of adding on the listView directly.
    quickReturnAttacher.addOnScrollListener(this);
}

Check the sample app for an example of usage.

Features

  • Supports dynamic adapters. That means you can add and remove items from your adapter and it will still work nicely.
  • You don't have to subclass QuickReturnAdapter in order to use it. Just pass your own adapter to the constructor and you're done.
  • Animated transitions via QuickReturnAttacher.setAnimatedTransition(true)
  • Supports bottom (footer) quick return position via QuickReturnAttacher.setPosition(QuickReturnListView.POSITION_BOTTOM).
  • You can use it with any subclass of AbsListView, including ListView and GridView.
  • If you're using a GridView, you have to tell QuickReturnAdapter how many columns it has, via its constructor:
  • Automatically adjusts the ListView/GridView to prevent it from being hidden behind the target view, when it is placed at the top of the list.
  • Supports ScrollView as well!
public QuickReturnAdapter(final ListAdapter wrappedAdapter, final int numColumns)

Works with API Level 10 and above.

Known issues/Caveats

  • The Animated Transition will sometimes hide/show randomly when scrolling down very slowly.

Changelog

Please see the Changelog to check what's recently changed.

Credits

Heavily inspired/influenced by the nice work of Roman Nurik's and Nick Butcher's and Lars Werkman's QuickReturnListView

Contributing

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
  • Fork the project
  • Start a feature/bugfix branch
  • Commit and push until you are happy with your contribution
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.

Copyright and license

Code and documentation copyright 2011-2014 Felipe Lima. Code released under the MIT license.

More Repositories

1

AsymmetricGridView

Android ListView that mimics a GridView with asymmetric items. Supports items with row span and column span
Java
1,844
star
2

wombat

Lightweight Ruby web crawler/scraper with an elegant DSL which extracts structured data from pages.
Ruby
1,300
star
3

GifImageView

Android ImageView that handles animated GIF images
Kotlin
1,162
star
4

ktnes

A multiplatform NES emulator written in Kotlin
Kotlin
293
star
5

kales

Kotlin on Rails
HTML
81
star
6

random-maze-generator

Find the shortest path out of a generated random maze. Rendered with canvas, tested with Jasmine.
JavaScript
62
star
7

brazil.db

πŸ‡§πŸ‡· Tabelas Postgres/MySQL com todas as cidades, estados, ruas, latitude, longitude e CEPs do Brasil
45
star
8

roberthood

Unofficial robinhood.com web UI
JavaScript
41
star
9

AbsListViewHelper

Really simple attacher class to add a header and/or a footer to an Android ListView or GridView
Java
37
star
10

Android-ImageManager

[DEPRECATED] An image downloading and caching library for Android
Java
26
star
11

churras

πŸ₯© DeFi wallet dashboard dApp
TypeScript
23
star
12

cs-exercises

A collection coding problems and solutions to stay in shape
JavaScript
17
star
13

6502Android

A 6502 Emulator for Android written in Kotlin
Kotlin
13
star
14

saasquatch

Rails boilerplate project for Saas websites
Ruby
6
star
15

show-do-milhao

πŸ’° A command line Show do MilhΓ£o app
Haskell
6
star
16

obgen

Observable (reactive streams) pattern implemented using es2015 in Typescript
TypeScript
5
star
17

brownian-tree-webgl

Brownian Tree rendered with WebGL with Rust + WASM
Rust
4
star
18

hackerrank

My solutions to some hackerrank challenges
Kotlin
3
star
19

android-bookstore

Java
3
star
20

felipecsl.com

My personal website and blog
HTML
3
star
21

rusty-chess

A chess game written in Rust compiled for the web with WASM
Rust
3
star
22

tree-viz

Render a Tree data structure in a HTML canvas with next.js
TypeScript
3
star
23

imdb-browser

Next.js app for browsing IMDB data for movies and tv shows
TypeScript
2
star
24

hexaco-viz

Visualization tool for HEXACO personality test results
JavaScript
2
star
25

dover

CMS as a service written in ASP.NET MVC
C#
2
star
26

julipe.org

JuLipe Estate Inc.
JavaScript
1
star
27

dover-csharp-api

CSharp Library for integration with Dover
C#
1
star
28

bin-packing

A collection of common bin packing algorithms in Kotlin
Kotlin
1
star
29

old-felipecsl.com

My Blog website on Octopress
JavaScript
1
star
30

mensagei.ro

A simple web based instant messenger
1
star
31

felipecsl

1
star
32

kapt-classloader-bug

Proof of concept for a bug with the Kotlin kapt compiler as of version 1.2.40
Java
1
star