[簡単Androidアプリ] リストビュー(ListView)に日付を表示してみよう!!「ArrayAdapterクラスの拡張」




前回は、リストビューに自分の好きな文字列をリストビューのアイテムとして追加しました。今回はをリストビューに日付を表示してみたいと思います。

では前回と同じようにレイアウトの作成を行ってください

[簡単Androidアプリ] リストビュー(ListView)を使ってみよう!!



Coding

コードの編集を行っていきます。

SampleMain.java


package com.sample.brogger;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class SampleMain extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // レイアウトの指定
        setContentView(R.layout.activity_sample_main);

        // オブジェクトの作成
        ListView lv = (ListView) findViewById(R.id.listView1);

        // リストビュー表示する文字列を設定します
        String[] lvStr = new String[50];

        // リストビューに表示する文字列を、格納するアダプターの作成
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, lvStr){

            @SuppressLint("SimpleDateFormat")
            public View getView(int pos, View convView, ViewGroup parent)
            {
                // 日付の表示形式を指定
                DateFormat df = new SimpleDateFormat("yyyy/MM/dd");

                // カレンダーのオブジェクトを取得
                Calendar cl = Calendar.getInstance();

                // 今日の日付を取得
                cl.setTime(new Date());

                // 今日の日付に行数を足し、表示する日付を取得
                cl.add(Calendar.DATE, pos);

                // 取得した日付をtmpTvに格納
                TextView tmpTv = new TextView(getBaseContext());
                tmpTv.setText(df.format(cl.getTime()));

                // テキストのサイズを設定
                tmpTv.setTextSize(20);

                // テキストのカラーを設定
                tmpTv.setTextColor(Color.BLACK);

                // 日曜日ならばテキストの色を変更
                if(cl.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
                {
                    tmpTv.setTextColor(Color.RED);
                }

                convView = tmpTv;

                return convView;

            }
        };

        // リストビューにアダプターを設定
        lv.setAdapter(adapter);

        // リストビューの項目をクリックした時の処理をするリスナ
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                // クリックされた項目の文字列を取得
                TextView tmpTv = (TextView) view;

                // トーストに取得した文字列を表示
                Toast.makeText(SampleMain.this, tmpTv.getText() + "が選択されました", Toast.LENGTH_LONG).show();
            }
        });
    }
}



Execution

では実行してみましょう。


項目をクリックすると・・・


トーストが表示されます。






0 コメント: