package com.codetroopers.betterpickers.sample.activity.datepicker; import android.content.Context; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import com.codetroopers.betterpickers.datepicker.DatePickerBuilder; import com.codetroopers.betterpickers.datepicker.DatePickerDialogFragment; import com.codetroopers.betterpickers.sample.R; import com.codetroopers.betterpickers.sample.activity.BaseSampleActivity; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.DateTimeFormatterBuilder; import java.util.ArrayList; /** * User: derek Date: 3/17/13 Time: 3:59 PM */ public class SampleDateListAdapter extends BaseSampleActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.list); ListView list = (ListView) findViewById(R.id.list); list.setAdapter(new SampleAdapter(this, getSupportFragmentManager())); } private class SampleAdapter extends BaseAdapter implements DatePickerDialogFragment.DatePickerDialogHandler { private ArrayList<DateTime> mDateTimes; private LayoutInflater mInflater; private ViewHolder holder; private DatePickerBuilder mDatePickerBuilder; private DateTimeFormatter mDateTimeFormatter = new DateTimeFormatterBuilder() .appendMonthOfYearShortText() .appendLiteral(" ") .appendDayOfMonth(1) .appendLiteral(", ") .appendYear(4, 4) .toFormatter(); public SampleAdapter(Context context, FragmentManager fm) { super(); mInflater = LayoutInflater.from(context); DateTime now = DateTime.now(); mDateTimes = new ArrayList<DateTime>(); for (int i = 1; i < 13; i++) { DateTime dt = new DateTime().withMonthOfYear(i).withDayOfMonth(1).withYear(now.year().get() - 1); mDateTimes.add(dt); } for (int i = 1; i < 13; i++) { DateTime dt = new DateTime().withMonthOfYear(i).withDayOfMonth(1).withYear(now.year().get()); mDateTimes.add(dt); } for (int i = 1; i < 13; i++) { DateTime dt = new DateTime().withMonthOfYear(i).withDayOfMonth(1).withYear(now.year().get() + 1); mDateTimes.add(dt); } mDatePickerBuilder = new DatePickerBuilder() .setFragmentManager(fm) .setStyleResId(R.style.BetterPickersDialogFragment_Light); } private class ViewHolder { public Button button; public TextView text; } @Override public int getCount() { return mDateTimes.size(); } @Override public DateTime getItem(int position) { return mDateTimes.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { view = mInflater.inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.button = (Button) view.findViewById(R.id.button); holder.text = (TextView) view.findViewById(R.id.text); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } DateTime dt = getItem(position); holder.text.setText(dt.toString(mDateTimeFormatter)); holder.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mDatePickerBuilder.setReference(position); mDatePickerBuilder.addDatePickerDialogHandler(SampleAdapter.this); mDatePickerBuilder.show(); } }); return view; } @Override public void onDialogDateSet(int reference, int year, int monthOfYear, int dayOfMonth) { DateTime dt = new DateTime().withMonthOfYear(monthOfYear + 1).withDayOfMonth(dayOfMonth).withYear(year); mDateTimes.set(reference, dt); notifyDataSetChanged(); } } }