package com.codetroopers.betterpickers.sample.activity.timepicker; 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.sample.R; import com.codetroopers.betterpickers.sample.activity.BaseSampleActivity; import com.codetroopers.betterpickers.timepicker.TimePickerBuilder; import com.codetroopers.betterpickers.timepicker.TimePickerDialogFragment; import java.util.ArrayList; /** * User: derek Date: 3/17/13 Time: 3:59 PM */ public class SampleTimeListAdapter 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 TimePickerDialogFragment.TimePickerDialogHandler { private ArrayList<Hm> mHms; private LayoutInflater mInflater; private ViewHolder holder; private TimePickerBuilder mTimePickerBuilder; public SampleAdapter(Context context, FragmentManager fm) { super(); mInflater = LayoutInflater.from(context); mHms = new ArrayList<Hm>(); for (int i = 0; i < 24; i++) { Hm hm = new Hm(); hm.hourOfDay = i; hm.minute = 0; mHms.add(hm); Hm hm2 = new Hm(); hm2.hourOfDay = i; hm2.minute = 15; mHms.add(hm2); Hm hm3 = new Hm(); hm3.hourOfDay = i; hm3.minute = 30; mHms.add(hm3); Hm hm4 = new Hm(); hm4.hourOfDay = i; hm4.minute = 45; mHms.add(hm4); } mTimePickerBuilder = new TimePickerBuilder() .setFragmentManager(fm) .setStyleResId(R.style.BetterPickersDialogFragment_Light); } private class Hm { public int hourOfDay = 0; public int minute = 0; } private class ViewHolder { public Button button; public TextView text; } @Override public int getCount() { return mHms.size(); } @Override public Hm getItem(int position) { return mHms.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(); } Hm hm = getItem(position); holder.text.setText(getString(R.string.time_picker_result_value, String.format("%02d", hm.hourOfDay), String.format("%02d", hm.minute))); holder.button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mTimePickerBuilder.setReference(position); mTimePickerBuilder.addTimePickerDialogHandler(SampleAdapter.this); mTimePickerBuilder.show(); } }); return view; } @Override public void onDialogTimeSet(int reference, int hourOfDay, int minute) { Hm hm = new Hm(); hm.hourOfDay = hourOfDay; hm.minute = minute; mHms.set(reference, hm); notifyDataSetChanged(); } } }