A modified version of Android's experimental StaggeredGridView. Includes own OnItemClickListener and OnItemLongClickListener, selector, and fixed position restore.
Java Groovy
Switch branches/tags
Nothing to show
Latest commit 8403a6d Jun 16, 2014 @maurycyw Merge pull request #63 from marcosalis/master
Position/column mappings: using HashSet instead of ArrayList for better performances - Some better handling of integer boxing

README.md

StaggeredGridView

Introduction

This is a modified version of Android's experimental StaggeredGridView. The StaggeredGridView allows the user to create a GridView with uneven rows similar to how Pinterest looks. Includes own OnItemClickListener and OnItemLongClickListener, selector, and fixed position restore.

Setup

To use StaggeredGridView in your projects, simply add this project to your workspace then add it as a library project to your current project.

Usage

StaggeredGridView can be added as a custom view to any layout.

Attributes supported (same behavior as GridView):

  • numColumns : determines the amount of columns to be drawn
  • drawSelectorOnTop : determine if selector should be drawn on top
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:staggered="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainLayout">

    <com.origamilabs.library.views.StaggeredGridView
        android:id="@+id/staggeredGridView1"
        staggered:numColumns="2"
        staggered:drawSelectorOnTop="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

The StaggeredGridView includes its own interface's OnItemClickListener, and OnItemLongClickListener since StaggeredGridView does not extend an AdapterView. Behavior is the same.

onItemClick(StaggeredGridView parent, View view, int position, long id);

onItemLongClick(StaggeredGridView parent, View view, int position, long id);

Tests

No tests have been written however I have tested this View manually with 2.2.2+ devices. Please report any issues.

TODO:

  • implement more custom attributes to mirror GridView's attributes
  • develop tests
  • hideSelector()
  • support multiple choice mode
  • currently restoring position can result in the views to be slightly offset when user flings to the top. This is corrected by checking the offsets when position 0 is reached. Would like to dig deeper into the issue.