2012年1月29日日曜日

Android:ArrayListをソートする

データを格納したArrayListを使ってList表示などよくやる方法です。
一つのデータをソートするより、複数条件でソートしたい場合どうすればいいのかメモです。
Collections.sort()を使ってソートします。
ソート条件はComparatorインターフェースの実装クラスで定義します。大小関係でソートされますが、同値の場合ソートされません。同値の時に次の要素でソートする事で複数条件でのソートを実現します。

例としてデータクラスに格納されているorderで比較し昇順にソートし、orderが同じならpointで比較します。

▽データ保持用クラス(Data.java)

public class Data {

    private String name;
    private int order;
    private int point;

    public Data(String name, int order, int point){
        this.name = name;
        this.order = order;
        this.point = point;
    }

    public String getName(){
        return this.name;
    }

    public int getOrder(){
        return this.order;
    }

    public int getPoint(){
        return this.point;
    }
}

▽ソート

 public void arrayTest(){
        ArrayList dataList = new ArrayList();

        dataList.add(new Data("data1", 5, 5));
        dataList.add(new Data("data2", 1, 6));
        dataList.add(new Data("data3", 1, 1));
        dataList.add(new Data("data4", 6, 2));
        dataList.add(new Data("data5", 1, 2));
        dataList.add(new Data("data6", 3, 6));

        for(int i=0; i(){

            @Override
            public int compare(Data lhs, Data rhs) {
                if((lhs.getOrder() - rhs.getOrder()) == 0){
                    return lhs.getPoint() - rhs.getPoint();
                }
                return lhs.getOrder() - rhs.getOrder();
            }

        });

        for(int i=0; i



ソート前:当然入れた通りに格納されています。



data1 / 5 / 5

data2 / 1 / 6

data3 / 1 / 1

data4 / 6 / 2

data5 / 1 / 2

data6 / 3 / 6



ソート後:orderが同値のものはpoint順でソートされます。



data3 / 1 / 1

data5 / 1 / 2

data2 / 1 / 6

data6 / 3 / 6

data1 / 5 / 5

data4 / 6 / 2

2012年1月15日日曜日

Android:画面を常時ONにする

画面のバックライト消灯までの時間が15秒にされてしまっていたりすると困ります。
なのでアプリ起動中は常にONしっぱなしにします。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //画面常時ON
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

2012年1月8日日曜日

Android:通知バー、タイトルを表示しない

通知バーや、アプリのタイトルを表示させない方法は以下です。
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ステータスバー削除
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //タイトル消去
        requestWindowFeature(Window.FEATURE_NO_TITLE);

android:ローテーションを無効にする

画面回転が有効になっている場合、アプリのデザインが縦横切り替わりで乱れてしまいます。
これを回避する為にはローテーションを無効にしてしまいます。

        

Androidおすすめアプリ<整理>:Folder Organizer

Androidおすすめアプリ<整理>:Folder Organizer


Folder Organizer

アプリを多くインストールしていくと、ホーム画面がショートカットで乱雑になったり、アプリ一覧から探すのが大変になっていきます。

このアプリはアプリのショートカットをフォルダにまとめてホームに設置出来るので、散らかったホーム画面をスッキリさせられます。

※無料版だと、ホームに設置したフォルダに直接ドラッグ&ドロップしてもアプリを追加出来ませんが、有料版だと出来るようです。手動で追加すればいいだけなのですが。


androidnaviに詳しい使い方が載っています。
『Folder Organizer』~アプリをジャンル分けして整理、検索性もUP!~

2012年1月3日火曜日

Android:トグルボタンをスイッチ風にカスタマイズ

android標準のトグルボタンを押すと光るスイッチ風に<shape>でカスタマイズしてみました。


トグルボタンのチェック状態<item android:state_checked="true/false">それぞれにレイアウトを作ります。