2015年7月2日木曜日

リストにヘッダーをセットした場合の注意点

リスト表示のヘッダー、フッターに何かを挿入したい場合。

TextView textView = new TextView(getActivity());
textView.setText("This is Header");
getListView().addHeaderView(textView, null, false);

アダプターの追加
setListAdapter(adapter);

みたいに、
setListAdapter() する前に addHeaderView() してあげる必要がある。

しかし、ここで注意点。

このままだと、他画面に移って、また上記の画面に戻った場合、エラーで落ちる。
理由は、既にsetListAdapter() されてるから addHeaderView() できません。

つまり、アダプターが破棄されずに残っている。

これを回避するには、
@Override
public void onDestroyView() {
    super.onDestroyView();
    setListAdapter(null);
}

このように、onDestroyView() にて、アダプターをnull してやる。

なお、アウトオブメモリー対策にもなる模様。

AndroidStudio で、Uploading file で止まる。

ビルド中、
Uploading file
 local path: ~~~.apk
 remote path: ~~~
で止まってしまう現象。

どうもソースツリーとかで他人のプロジェクトを触っている時に発生。

メニューから、
Build -> Clean Project
をして、直ったっぽい。

と思ったら、再発。

プロジェクトのルートで、
./gradlew clean packageDebug
で様子見。

…また再発。

どうもUSBケーブルが悪かったようで、交換したら直った。

追記)
交換後も、たまに再発。
どうも端末にもよるらしい。
また、人に聞いたら、やっぱり端末によっては、かなり頻発するらしい…

2015年6月29日月曜日

言語をまたいだcookieの使用

php で
setcookie('hoge', '1', time() + 3600, '/');
でセット。

JavaScript で
cookies.js なんかを入れれば
var cookies = docCookies.getItem("hope");
で取得して使える。