View
ここにおけるViewとはAndroidのViewのこと。
Androidアプリのコントロール群がひととおりおさめられているpackage。
リストビューのカスタマイズ
1.リスト用のXMLを用意。
2.ArrayAdapterをオーバーライドして専用のアダプタを作成する。
3.getViewオーバーライドで各情報をviewに対して設定していく
アダプタのオーバーライドが肝かなー。
http://labs.techfirm.co.jp/android/cho/751
リストビュー内にクリックを前提としたコントロールを追加
追加するとOnItemClickListenerが働かなくなるので注意。回避方法としては、リスト内に追加したクリッカブルコントロールのFocusableをfalseに設定すること。これでOnItemClickも内部に設定したコントロールもイベントをとれる。
ImageView
setImageUriはHTML経由の画像は使えない。
HTTPを経由する場合
setImageDrawable(Drawable drw)
ちなみに引数のDrawableクラスは
Drawable.createFromStream(new URL("URL").openStream(),"Name")で作成
http://d.hatena.ne.jp/iRSS/20100102/126244...
WebViewクラス
loadData()メソッドでは特殊文字は表示されない。バグ。
loadDataWithBaseURL()こちらのメソッドを使用すれば問題なく表示される。
http://www.taosoftware.co.jp/blog/2009/01/...
WebViewにCookieをセットする
CookieManger.getInstance()で得たCookieManagerにCookieをセットする。setCookie(目的のURL, クッキー)でセットされるが、同じURLでも複数のクッキーをまるごと一気には設定できない。一個づつ分割してセットすること。domainやpathやexpiresなどのパラメータはセットするクッキー内に一緒に入っていても良い。
ExpandableListViewクラス
カスタムアダプタ作成
BaseExpandableListAdapterをextendsして作成する。子アイテムはgetChildView()が呼ばれてView作成。親アイテムはgetGroupView()が呼ばれて作成される。
あと注意点としてはisChildSelectable()がOverrideとして追加された初期ではfalseを返すようになっている。子アイテムにもSelectedイベントを付加させたい場合はここはtrueを返すようにすること。
ExpandableListViewActivityクラスでコンテキストメニュー
1.コンストラクタ辺りでコンテキストメニューを表示するビューを設定する。registerForContextMenu(getExpandableListView());
2.onCreateContextMenu(コンテキスト表示前のイベント)とonContextItemSelected(コンテキスト表示終了時イベント)をオーバーライドする。
しかし選択されているアイテムの取り方がExpandableだけにちょっと特殊。引数のMenuInfoもしくはMenuItemからgetMenuInfo()を受け取りExpandableMenuInfoにキャストしておく。ListViewのgetPackedPositionTypeから選択しているアイテムが親アイテムか子アイテムかを判別。その後先程のExpandableMenuInfoにあるpackedPositionを引数にするgetPackedPositionGroup()もしくはgetPackedPositionChild()を使って各ポジションを得る。長いよ。