activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.datepickerwithspinner.MainActivity"> <TextView android:id="@+id/tvdate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <Button android:id="@+id/Save" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/tvdate" android:text="Date Picker"/> </RelativeLayout>
datepickerdialog.java
import java.util.Calendar; import android.app.Dialog; import android.content.Context; import android.graphics.Typeface; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TableLayout.LayoutParams; import android.widget.TextView; import com.wheel.ArrayWheelAdapter; import com.wheel.NumericWheelAdapter; import com.wheel.OnWheelChangedListener; import com.wheel.WheelView; public class DatePickerDailog extends Dialog { private Context Mcontex; private int NoOfYear = 100; public DatePickerDailog(Context context, Calendar calendar, final DatePickerListner dtp) { super(context); Mcontex = context; LinearLayout lytmain = new LinearLayout(Mcontex); lytmain.setOrientation(LinearLayout.VERTICAL); LinearLayout lytdate = new LinearLayout(Mcontex); LinearLayout lytbutton = new LinearLayout(Mcontex); Button btnset = new Button(Mcontex); Button btncancel = new Button(Mcontex); btnset.setText("Set"); btncancel.setText("Cancel"); final WheelView month = new WheelView(Mcontex); final WheelView year = new WheelView(Mcontex); final WheelView day = new WheelView(Mcontex); lytdate.addView(day, new LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1.2f)); lytdate.addView(month, new LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0.8f)); lytdate.addView(year, new LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1f)); requestWindowFeature(Window.FEATURE_NO_TITLE); lytbutton.addView(btnset, new LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1f)); lytbutton.addView(btncancel, new LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1f)); lytbutton.setPadding(5, 5, 5, 5); lytmain.addView(lytdate); lytmain.addView(lytbutton); setContentView(lytmain); getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); OnWheelChangedListener listener = new OnWheelChangedListener() { public void onChanged(WheelView wheel, int oldValue, int newValue) { updateDays(year, month, day); } };
MainActivity.java
import android.app.Dialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; public class MainActivity extends AppCompatActivity { TextView tvDate; Button btShow; Calendar dateandtime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvDate=(TextView)findViewById(R.id.tvdate); btShow=(Button)findViewById(R.id.Save); dateandtime = Calendar.getInstance(Locale.US); btShow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatePickerDailog dp = new DatePickerDailog(MainActivity.this, dateandtime, new DatePickerDailog.DatePickerListner() { @Override public void OnDoneButton(Dialog datedialog, Calendar c) { datedialog.dismiss(); dateandtime.set(Calendar.YEAR, c.get(Calendar.YEAR)); dateandtime.set(Calendar.MONTH, c.get(Calendar.MONTH)); dateandtime.set(Calendar.DAY_OF_MONTH, c.get(Calendar.DAY_OF_MONTH)); tvDate.setText(new SimpleDateFormat("dd MMMM yyyy") .format(c.getTime())); } @Override public void OnCancelButton(Dialog datedialog) {
add a folder named wheel in com directoty ie, c: \ DatePicker \ app \ src \ main \ java \ com \ wheel \
In the folder with wheels NumericWheelAdapter.java ie, c: \ DatePicker \ app \ src \ main \ java \ com \ wheel \ NumericWheelAdapter.java
import android.content.Context; public class NumericWheelAdapter extends AbstractWheelTextAdapter { public static final int DEFAULT_MAX_VALUE = 9; private static final int DEFAULT_MIN_VALUE = 0;
create two interfaces in a folder with wheels 1. OnWheelClickedListener.java 2. OnWheelChangedListener.java
OnWheelClickedListener.java
package com.wheel; public interface OnWheelClickedListener { void onItemClicked(WheelView wheel, int itemIndex); }
OnWheelChangedListener.java
package com.wheel; public interface OnWheelChangedListener { void onChanged(WheelView wheel, int oldValue, int newValue); }
output screen e.g. DatePicker
