Skip to content
implement android pinterest app like multi column list view.
Branch: master
Clone or download
Pull request Compare This branch is 10 commits ahead, 84 commits behind GDG-Korea:master.
Latest commit aeb1097 May 16, 2013
Type Name Latest commit message Commit time
Failed to load latest commit information.
.settings 项目改成UTF-8 May 16, 2013
libs 修改为图片瀑布流 Apr 20, 2013
res 1.修改默认列数,竖向为两列,横向为三列 May 16, 2013
src 项目改成UTF-8 May 16, 2013
.classpath delete unused file Nov 8, 2012
.gitignore v0.1 Nov 6, 2012
.project v0.1 Nov 6, 2012
01.png 添加截图 May 1, 2013
02.png 添加截图 May 1, 2013
03.png 添加截图 May 1, 2013
AndroidManifest.xml 修改为图片瀑布流 Apr 20, 2013 Update May 1, 2013
lint.xml v0.5 based on android framework listview Nov 8, 2012 v0.1 Nov 6, 2012
proguard-project.txt v0.1 Nov 6, 2012 修改为图片瀑布流 Apr 20, 2013
screenshot.png v0.1 Nov 6, 2012


Open source project in order to implement pinterest like list view on android. (You can check how pinterest app looks like form below link..)

This project is statred based on sony deveoper's blog post 'making your own 3d list'.

But, currenty it is implemented based on android framework 2.3's list view source. You can check modified list view sources in internal package.

Not supported Features

  • Entry from XML layout.
  • Choice Mode & Item Selection.
  • Filter
  • Handle Key Event & Arrow Scrolling..


  • 下拉刷新后保持当前位置
  • 多选模式
  • 图片的宽度判断

Screen Shot


01 02 03

This is a screen shot of sample activity.

Example Image

How to use

To run Sample App.

  1. clone project.

  2. run on your android phone.

  3. in option menu, you can add items or lunch pull-to-refresh sample.

To use Pinterest Like Multi Column View.

  1. check this project as library project.

  2. MultiColumListView is the view what you need.

To use pull-to-refresh features.

  1. check this project as library project.

  2. MultiColumnPullToRefreshListView class in extra folder is what you need.


  • plaColumnNumber

    Number of column. (default value is 2)

  • plaLandscapeColumnNumber

    Number of column in landscape mode (the orientation that window's width is longer than height.)

Overridable Methods

PLA_ListView was made based on Android 2.3 Framework's ListView, and support those protected methods to let a user customize list view's behavior.

protected void onMeasureChild(View child, int position, int widthMeasureSpec, int heightMeasureSpec);	

protected void onItemAddedToList(int position, boolean flow );

protected void onLayoutSync(int syncPos);

protected void onLayoutSyncFinished(int syncPos);	

protected int getFillChildBottom();

protected int getFillChildTop();

protected int getScrollChildBottom(); 

protected int getScrollChildTop();

protected int getItemLeft(int pos);

protected int getItemTop( int pos );	

protected int getItemBottom( int pos );

protected void onAdjustChildViews( boolean down );

Change Log


기반으로 러프하게 작성되었습니다.


패키지 구조가 com.huewu.pla.* 형태로 변경되었습니다.

안드로이드 2.3 버전의 ListView 기반으로 수정되었습니다. (Don't reinvent the wheel) 프레임워크 소스 중 리스트 뷰 관련 파일을 긁어와 많은 Rabbit Hole 을 땜방했습니다.

결과물은 com.huewu.pla.lib.internal 패키지를 참고하시기 바랍니다.


Android-PullToRefresh 라이브러이와 연동되도록 extra package 를 추가했습니다.

이 오픈소스 프로젝트를 기반으로, 해당 소스의 일부 내용을 수정 했습니다. (확장을 위한 visiblity)

스크롤 업/다움 시 그리고 어댑터에 아이템 추가 시 컬럼 위치가 변경되는 버그를 수정했습니다.


xml layout 상에서 컬럼 수를 지정할 수 있도록 두 개의 Attribute 를 추가했습니다.



ActionBarSherlock 라이브러리와 함께 사용할 시 발생하는 Attriubte 충돌 문제를 수정했습니다.


Fling 및 Scroll 시 영역 계산이 제대로 이루어지지 않아서 스크롤이 끝까지 이루어지지 않거나, 화면이 떨리는 버그를 수정했습니다.

Override 가능한 함수들의 이름을 이해하기 쉽게(?) 변경했습니다.


Header View 를 정상적으로 지원합니다.

Pull-To-Refresh 기능을 위해, 기존 사용하던 오픈 소스 대신 를 사용하도록 수정하였습니다. 다른 프로젝트와 의존성 없이 사용 가능합니다.


하나 이상의 Header View 와 Footer View 를 지원합니다.


첫번째 아이템이 보이는 경우, 각 컬럼의 Top 포지션을 강제로 정렬 시키도록 수정했습니다.


리스트에 새로운 아이템이 추가되는 경우 Fling 속도가 비정상적으로 빨라지는 버그를 수정했습니다.


Layout 이벤트 시, 아이템의 위치가 변경되는 버그를 수정했습니다.

Item Select 관련된 코드가 제거되었습니다.


  1. Fling 및 스크롤바를 지원하지 않습니다.
  1. Scroll Up / Down 시 재 정렬되는 아이템의 위치가 변경되는 버그가 있습니다.
  1. 리스트의 마지막 부분에서 스크롤이 자연스럽지 않습니다.
  1. 어뎁터에 데이터를 추가해도 정상적으로 동작
  1. PullToRefresh 라이브러리와 연동.
  1. Fling 속도가 이상함.
  1. 복잡한 뷰를 사용하는 경우, 스크롤 할 떄 마다 뷰의 위치가 Y Position 이 변경됩니다.
  1. 어댑터에 데이터가 삭제, 변경되거나 중간에 삽입 되는 경우 처리

*그외 아주 많은 문제가 있습니다... 아직 열혈 개발 중 인걸요... =)


어떤 종류의 지원도 언제나 환영입니다 =)

Any kinds of helps ( bug report / push request / suggestionss ) are welcomed =)


Copyright 2012 huewu.yang

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

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
You can’t perform that action at this time.