ListViewでPull to refreshを実現する方法

色々なLibraryがあるけど、android-pulltorefreshが一番良さげ

使い方

まずは、下からソースをダウンロードする。

EclipseにImport

普通にImport。[ File → Import → Android ]で、ダウンロードしたフォルダを選択してImportする。

Libraryに設定

作成中のProjctを右クリックして[ Properties → Android ] から Library で Add でさっきImportしたやつを選択する

コード

Pull to Refreshに変更したいListViewをcom.markupartist.android.widget.PullToRefreshListViewに変更

    <com.markupartist.android.widget.PullToRefreshListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

んで、普通に取ってきて設定

	listView = (PullToRefreshListView) findViewById(R.id.listView);
	listView.setAdapter(adapter);
	listView.setOnRefreshListener(new OnRefreshListener() {
		@Override
		public void onRefresh() {
			// pull to refresh時に呼ばれる

			// なんかしらの動作

			// こいつが呼ばれることでアニメーションが終わる
			listView.onRefreshComplete();
		}
	});

他に試したもの

RefreshableListView

ListViewをPull to Refreshできるように拡張しただけのシンプルなもの。以下からダウンロード

んで、プロジェクトに設定して動かそうとしたけど何をやっても動かない。どう設定すればうごくのかいまだに分からず。

Android-PullToRefresh

ListViewだけではなくて色々なものが含まれている多機能pull to refreshのやつ。以下からダウンロード

こいつを最初使おうとしたんだけど、ListViewでなぜかsetOnItemLongClickListenerが設定できない。。。今回はLongClickを元に動かさないといけなかったから断念した。WebViewとかでpull to refreshをしたい場合はこいつ使えばいいんじゃないかなー。