Selasa, 28 Oktober 2014

Widget: Picker

Dalam android, picker sering dimanfaatkan untuk melakukan setting tanggal dan jam. Berikut langkah pembuatannya.
Buat file layout dengan nama "activity_picker.xml" pada folder res>layout.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"        
        android:id="@+id/dateAndTime"/>
    <Button android:text="Set the Date"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/dayBtn">       
    </Button>
    <Button android:text="Set the Time"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/timeBtn">       
    </Button>
</LinearLayout>


Selanjutnya, buat file java dengan nama "Picker.java" pada folder src.
package com.example.contoh;
import java.text.DateFormat;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
public class Picker extends Activity implements OnClickListener{
    DateFormat fmtDateAndTime = DateFormat.getDateTimeInstance();
    TextView dateAndTimeLabel;
    Calendar dateAndTime = Calendar.getInstance();
    DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int month, int day) {
            // TODO Auto-generated method stub
            dateAndTime.set(Calendar.YEAR, year);
            dateAndTime.set(Calendar.MONTH, month);
            dateAndTime.set(Calendar.DAY_OF_MONTH, day);
            updateLabel();
        }
    };
    TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int jam, int menit) {
            // TODO Auto-generated method stub
            dateAndTime.set(Calendar.HOUR_OF_DAY, jam);
            dateAndTime.set(Calendar.MINUTE, menit);
            updateLabel();
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_picker);
        Button dayBtn = (Button) findViewById(R.id.dayBtn);
        dayBtn.setOnClickListener(this);
        Button timeBtn = (Button) findViewById(R.id.timeBtn);
        timeBtn.setOnClickListener(this);
        dateAndTimeLabel = (TextView) findViewById(R.id.dateAndTime);
        updateLabel();
    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
            case R.id.dayBtn: settingTanggal(); break;
            case R.id.timeBtn: setJam(); break;
        }
    }
    private void updateLabel() {
        dateAndTimeLabel.setText( fmtDateAndTime.format(dateAndTime.getTime()));
    }
    private void settingTanggal() {
        new DatePickerDialog(Picker.this, d, dateAndTime.get(Calendar.YEAR), dateAndTime.get(Calendar.MONTH), dateAndTime.get(Calendar.DAY_OF_MONTH)).show();
    }
    private void setJam() {
        new TimePickerDialog(Picker.this, t, dateAndTime.get(Calendar.HOUR_OF_DAY), dateAndTime.get(Calendar.MINUTE), true).show();
    }
      
}


Terakhir, tambahkan deklarasi file java yang akan di-running pada file AndroidManifest.xml.
<activity
            android:name="com.example.contoh.Picker"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


Berikut tampilannya.


Tidak ada komentar:

Posting Komentar