package com.geek_alarm.android.adapters; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.RadioButton; import android.widget.TextView; import com.geek_alarm.android.AlarmSound; import com.geek_alarm.android.R; import com.geek_alarm.android.activities.AlarmSoundPickerActivity; /** * Adapter for displaying alarm sounds. * It also tracks current selected and previous selected sound, * in case we need to return to previous selected. */ public class AlarmSoundAdapter extends ArrayAdapter<AlarmSound> { private LayoutInflater inflater; private AlarmSoundPickerActivity.SoundClickListener clickCallback; private int selected = -1; private int previousSelected = -1; private OnClickListener listener; public int getSelected() { return selected; } public void setSelected(int selected) { this.previousSelected = this.selected; this.selected = selected; } public AlarmSoundAdapter(Context context, List<AlarmSound> sounds, AlarmSoundPickerActivity.SoundClickListener callback) { super(context, -1, sounds); inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.clickCallback = callback; listener = new SoundClickListener(); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.alarm_sound, null); convertView.setOnClickListener(listener); convertView.findViewById(R.id.radio).setOnClickListener(listener); } convertView.setTag(position); AlarmSound sound = getItem(position); TextView title = (TextView)convertView.findViewById(R.id.title); title.setText(sound.getTitle()); RadioButton radio = (RadioButton)convertView.findViewById(R.id.radio); radio.setTag(position); radio.setChecked(selected == position); return convertView; } public void selectPrevious() { this.selected = this.previousSelected; notifyDataSetChanged(); } private class SoundClickListener implements OnClickListener { @Override public void onClick(View view) { int id = (Integer)view.getTag(); setSelected(id); clickCallback.onClick(selected); notifyDataSetChanged(); } } }