Android

【Android】AsyncTaskLoaderをもっと便利にする(準備編)

大昔に「AsyncTaskLoader便利じゃね?いっぱい使うんじゃね?」みたいなことを書いたんですが、全然使ってません。以前作ったこの子が便利すぎるからです。 とは言えちょっと不満なところもあります。再帰の処理を組み込むと、結構読みにくいんです。AsyncTa…

【Android】Viewが表示された時のイベントを設定する

Viewが表示される瞬間のイベントを設定したいことがあります。 例えば、ListViewのフッタが表示されたら自動で次のデータを取りに行く、なんて処理。 世の中の人はこれを「最後尾までスクロールされたかどうか」を調べて実現するんですが、ちょっとクールじ…

【Android】Fragment単位でキーイベントを管理する

Androidのキーイベントの管理はActivity#onKeyDownで行うことが出来ます。 が、Fragmentにはそれに該当するメソッドがありません。呼び出したActivityのonKeyDownを実行してしまいます。 まぁ色んなActivityで再利用されることを前提にしているので、「Activ…

【Android】ActionBarのカスタマイズ覚書

HoneyCombから追加されたActionBarですが、あまりカスタマイズ性が高くなく、アクロバティックな手法を使わないとカスタマイズ出来ない箇所がいくつかあります。 需要は高そうなんだけどなぜかデフォルトのメソッドやプロパティとして提供されてないカスタマ…

【Android】FragmentPagerAdapterの中身を動的に変更する

注意 この記事はFragmentAdapterの使い方と言うよりは、FragmentPagerAdapter is クソみたいな話をします。 結論から言うと、FragmentPagerAdapter / FragmentStateAdapterの実装では内部のFragmentに対するreplaceやremoveは実質不可能です。 また、この記…

AndroidでTwitter4Jを使うときのノウハウまとめ(後半その2)

先に後編その1をよんでね! UserStreamを使用する 先に言っておくと、Twitterのガイドラインでは「携帯電話で使うならwifiかなんかに繋がってる時以外はやんないほうがいいよ。」と書かれているんですが、じゃあREST APIの使用回数制限もっと増やせやって話…

AndroidでTwitter4Jを使うときのノウハウまとめ(後半その1)

思った以上に間があいてしまいましたが、後半戦です。前半はこちら。 目次 後半はこんな話をします。 アイコンのURLをBitmapに変換しキャッシュする Timelineそのものをキャッシュする UserStreamを使用する 前半はこんな感じでした。 Twitterとの通信を行う…

AndroidでTwitter4Jを使うときのノウハウまとめ(前半)

とても今更ですが、意外とこの手のまとまった記事を見たことがないので、自分なりにまとめてみます。 私がAndroidの話をするとほぼ100%の確率でこのライブラリが絡んでくるんですが、この記事では頑張って封印します。超めんどくせー。 目次 前半はこんな感…

【Android】ListViewのHeader/FooterのViewに直接イベントを設定する

ListViewのHeader/FooterはAdapterを操作するのではなくListView#addHeaderViewもしくはListView#addFooterViewを使用するのが定石となっています。 ListViewにAdapterをセットする前にこのメソッドを呼ばなきゃいけないとか、上記のメソッドを呼ぶとListVie…

【Android】Fragment内で同一Fragmentを表示する

近年まれに見るハマり方をしてしまったのでメモしておきます。 やろうとしていたこと MainActivityでTimelineFragmentを表示→TimelineFragmentの要素をクリックするとTimelineMenuDialogFragmentを表示→TimelineMenuDialogFragmentのConversationをクリック…

【Android】Activityの内容を動的に生成する

こう、Activityのレイアウトとしては結構違うんだけど、まぁ大体要約すると「onCreateでProgressDialogを表示し、その裏でDBかWebから何らかのリソースをとってきて整形してListViewに表示する」みたいなのって、よくあるパターンじゃないですか。 こんだけ…

【Android】ListViewのレイアウトを動的に切り替える際の問題点

以前[Android](Expandable)ListViewで各データごとに表示を切り替えると言う記事で作ったアイテムごとに動的にレイアウトを切り替えられるListViewですが、ViewHolderを使った時にちょっとした問題が起こったので、メモしておきます。 [2013/03/28追記] なん…

【Android】SQLiteDatabaseの定形処理を作る

SQLiteDatabaseの処理は、SQLiteOpenHelperからDBをもらって、selectならカーソル開いて、更新ならトランザクションかけて…と、大体決まりきったものが多いです。 ちょっとしたことなら別にいいんですが、SQLiteをフル活用しようとしてDAOを作ってるとこの辺…

【Android】(Expandable)ListViewで各データごとに表示を切り替える

以前作ったやつを使っているうちに、「データの表示も動的に変更出来ないもんかなぁ…。」と思うようになり、まぁクロージャ使えば普通に出来るよね、ってことで、作ります。 親要素と子要素に追加するコード 要はExpandableListAdapter#getGroupViewとExpand…

【Android】ExpandableListViewの各データにイベントを設定する(完成版)

今更ですがあけましておめでとうございます。昨年からのやり残しがあったので消化していきます。 ExpandableParent<EventArg> 実際に出来たコードはこんな感じです。まずはExpandableParent<EventArg>。これは親グループになります。 public class ExpandableParent<EventArg> implements S</eventarg></eventarg></eventarg>…

【Android】ExpandableListViewの各データにイベントを設定する(案)

ListViewの方でやったものの、ExpandableListViewでも同じことをしたくなってしまったので、やってみます。 ただ、私はExpandableListViewをほとんど使ったことがなく、AdapterもSimpleExpandableListAdapterしか使ったことがありません。なのでいつものよう…

【Android】TextViewの文字列にリンクを設定する

TextViewにはautoLinkと言うAttributeがあって、これをつけておけばURLを自動でリンクしてくれるんですが、内部で使っている正規表現がお粗末なのか、単純にテストパターンに含まれてないのか、日本語URLも受け付けるつもりなのか、ともかく2バイト文字も平…

【Android】ListViewの各データにイベントを設定する

ListView、もしくはそれに設定されたAdapterから要素を取得するには、どうあがいてもpositionを使って取得することになります。 そして、ListViewにonItemClickListenerを設定しつつ、クリックされた場所に応じて動的に処理を変更させたい場合は、positionそ…

【Android】Adapterをforeachで使えるようにする

Adapterってあるじゃないですか。ListViewとか、ListViewとか、ListViewで使うあれです。あれ、foreachで回したくなりません? いや確かに、Adapterを作る以上、ほとんどの場合は何らかのIterableなもの(例外はCursorぐらい?あれもiteratorパターンではあ…

【Android】AsyncTaskの各種イベントを全部クロージャでフックする

昨日のやつは別にTwitterとの通信に限らず、もっと汎用的に出来るんじゃないの?と思ったので試し書き。30分ぐらいでサクラエディタで一気に書いたのでコンパイルが通るかも怪しいです。 コード public class ReactiveAsyncTask<Param, Progress, Result> extends AsyncTask<Param, Progress, ReactiveAsyncTaskResult<Result>> { privat</param,></param,>…

【Android】Twitter4jのTwitterの通信に関する部分を全部AsyncTaskでラップする

色々思うことあって自作のAndroid用Twitterクライアントを全面的に書き直すことにしました。具体的な理由としては、Android 3.0以降のAPIを使ってみたいと言うのと、せっかくクロージャが使えるようになったんだから全部直してしまえ、の二つです。主に後者…

【Android】Twitter4JのUserStreamのイベント時の動作をクロージャで指定する

JavaでTwitter関連の処理をしたいならTwitter4Jを使わない理由がない、と思っています。本当によく出来たライブラリです。 当然このライブラリでUserStreamを処理する事もできます。ありがたいことに全部非同期で処理してくれます。 詳しいやり方については…

Android Support Libraryセットアップ方法の意訳

サポートライブラリのセットアップ サポートライブラリを開発プロジェクトに適用する方法は使用する機能とAndroidプラットフォームのバージョンに関係します。 このドキュメントガイドではサポートライブラリをダウンロードする方法、及び開発環境にライブラ…

【Android】Android 3.0〜4.0ぐらいに追加されたAPIまとめ(4.x編)

4.0.xで追加された諸要素 4.0.xでAPIが追加されたのは4.0.0及び4.0.3のみみたいです。 端末内の個人情報やカレンダーに登録されている情報なんかを引っ張ってこれるようになったみたいですが、特に興味がないので割愛。 かなり色んな要素が追加されてはいる…

【Android】Android 3.0〜4.0ぐらいに追加されたAPIまとめ(3.x編)

結局自分でSupport Libraryを使ったりなんだりでもうちょっと詳しくなったので、色々追記しました。 [2014/07/02追記ここまで] 前書き 前に使ってた端末がFroyoだったこと、Androidアプリの開発を始めた頃はGingerbread全盛期だったこともあり、AndroidのAPI…