package com.kuxhausen.huemore.alarm;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.ResourceCursorAdapter;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
import com.kuxhausen.huemore.R;
import java.util.ArrayList;
public class AlarmRowAdapter extends ResourceCursorAdapter implements OnCheckedChangeListener {
private ArrayList<AlarmData> mList = new ArrayList<AlarmData>();
public AlarmRowAdapter(Context context, int layout, Cursor c, int flags) {
super(context, layout, c, flags);
}
public AlarmData getRow(int position) {
return mList.get(position);
}
@Override
public int getCount() {
return mList.size();
}
@Override
public void changeCursor(Cursor cursor) {
super.changeCursor(cursor);
mList.clear();
if (cursor != null) {
cursor.moveToPosition(-1);// not the same as move to first!
while (cursor.moveToNext()) {
mList.add(new AlarmData(cursor));
}
cursor.moveToFirst();
notifyDataSetChanged();
}
}
@Override
public void bindView(View rowView, Context context, Cursor cursor) {
ViewHolder viewHolder;
if (rowView.getTag() == null) {
viewHolder = new ViewHolder();
viewHolder.scheduledButton =
(CompoundButton) rowView.findViewById(R.id.alarmOnOffCompoundButton);
viewHolder.time = (TextView) rowView.findViewById(R.id.timeTextView);
viewHolder.secondaryDescription = (TextView) rowView.findViewById(R.id.subTextView);
// Hold the view objects in an object, that way the don't need to be "re-found"
rowView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) rowView.getTag();
}
/** Set data to your Views. */
AlarmData item = mList.get(cursor.getPosition());
AlarmLogic.logAlarm("BindView", item);
viewHolder.scheduledButton.setTag(item);
viewHolder.scheduledButton.setOnCheckedChangeListener(null);
viewHolder.scheduledButton.setChecked(item.isEnabled());
viewHolder.scheduledButton.setOnCheckedChangeListener(this);
viewHolder.time.setText(item.getUserTimeString(context));
viewHolder.secondaryDescription.setText(item.getSecondaryDescription(context));
}
protected static class ViewHolder {
protected TextView time;
protected TextView secondaryDescription;
protected CompoundButton scheduledButton;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
AlarmData ar = (AlarmData) buttonView.getTag();
if (ar.isEnabled() != isChecked) {
AlarmLogic.toggleAlarm(mContext, ar);
}
}
}