ラベル 関数 の投稿を表示しています。 すべての投稿を表示
ラベル 関数 の投稿を表示しています。 すべての投稿を表示

2014年5月9日金曜日

【アプリ開発】CSVファイル読込クラス

CSVファイルを読み込むだけの汎用的なクラスが欲しくて作成しました(^^;


CSVファイル読込クラス


/***************************************************************************
* CSVコントロールクラス
***************************************************************************/
public class CSVCtrl
{
    /***************************************************************************
    * CSVファイルから読み込んだデータリストを取得
    *
    * @param csContext        コンテキスト
    * @param strCsvFileName   CSVファイル名
    * @return 読み込んだCSVデータリスト
    *
    * @author k0j1
    ***************************************************************************/
    static public List ReadCSV(Context csContext, String strCsvFileName)
    {
        InputStream csInputStream = null;
        BufferedReader csBufReader = null;
        List sCsvList = new ArrayList();

        try
        {
            AssetManager csAsset = csContext.getResources().getAssets();
            csInputStream = csAsset.open(strCsvFileName);
            csBufReader = new BufferedReader(new InputStreamReader(csInputStream));

            // タイトル処理
            // タイトルは読み捨てる
            csBufReader.readLine();

            // データ処理
            {
                // 最終行まで読み込む
                for( String line = ""; (line = csBufReader.readLine()) != null; )
                {

                    // 1行をデータの要素に分割
                    StringTokenizer csStringToken = new StringTokenizer(line, ",");

                    // リストに保持
                    sCsvList.add(csStringToken);
                }
                csBufReader.close();
            }

        } catch (FileNotFoundException e) {
            // Fileオブジェクト生成時の例外捕捉
            e.printStackTrace();
        } catch (IOException e) {
            // BufferedReaderオブジェクトのクローズ時の例外捕捉
            e.printStackTrace();
        }

        return sCsvList;
    }
}


上記の関数で以下のような最初の1行がタイトル行であるCSVファイルを処理できます。


❏timetable.csv
番号,50音順(1:あ行、2:か行、…),地域区分,区,愛称,経路区分,経路・時刻表名,URL
1,1,1,荒川区,さくら・汐入さくら,1,運行ルート,http://yamatocreation.cocotte.jp/bus/arakawa/keiro
2,1,1,荒川区,さくら・汐入さくら,2,さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/sakura
3,1,1,荒川区,さくら・汐入さくら,3,汐入さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/sioiri
4,1,1,荒川区,さくら・汐入さくら,4,町屋さくら時刻表,http://yamatocreation.cocotte.jp/bus/arakawa/matiya
:

2014年5月3日土曜日

【アプリ開発】pxからdip(dp)への変換

アプリ開発をしててコード上でレイアウト調整するときなんかに
よく使う関数ですので紹介しときます(^^)




pxからdip(dp)に変換する関数(メソッド)


    /*******************************************
     * ChangeDip()
     * ピクセルからDipにサイズを変換
     * 
     * @param  ac  Activity
     * @param  nPixel 変換するピクセル値
     * @return  Dip値
     *******************************************/
    static public int ChangeDip(Activity ac, int nPixel)
    {
        final float scale = ac.getResources().getDisplayMetrics().density;
        return (int) (nPixel * scale);
    }

dip(dp)とは
ピクセル(px)は端末ごとに異なる画面密度(dpi)によっては同じピクセル値でも見えてくるサイズが変わるため、端末ごとで一定の値となるdip(=dp)に変換しています。1dipは160dpiの画面で1px、320dpiの画面で2pxです。