I implemented an ArrayAdapter
for my ListView
:
public class CalcAMRListAdapter extends ArrayAdapter<AMRStateListEntry> implements OnItemSelectedListener {
public CalcAMRListAdapter(Context context, List<AMRStateListEntry> entries) {
super(context, R.layout.activity_calc_amr_fragment_row, entries);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
AMRStateListEntry entry = this.getItem(position);
ViewHolder viewHolder = null;
LayoutInflater inflater = null;
if(convertView == null) {
viewHolder = new ViewHolder();
inflater = LayoutInflater.from(this.getContext());
convertView = inflater.inflate(R.layout.activity_calc_amr_fragment_row, parent, false);
viewHolder.spinnerActivity = (Spinner) convertView.findViewById(R.id.calc_amr_row_spinner_activity);
viewHolder.spinnerHours = (Spinner) convertView.findViewById(R.id.calc_amr_row_spinner_hours);
viewHolder.textViewPal = (TextView) convertView.findViewById(R.id.calc_amr_row_textview_pal);
viewHolder.imageButtonDelete = (ImageButton) convertView.findViewById(R.id.calc_amr_row_button_delete);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
String pal = null;
switch (entry.getActivity()) {
case 1: pal = "" + 0.95;
break;
case 2: pal = "" + 1.2;
break;
case 3: pal = "" + 1.5;
break;
case 4: pal = "" + 1.7;
break;
case 5: pal = "" + 1.9;
break;
case 6: pal = "" + 2.4;
break;
default: pal = "";
break;
}
viewHolder.spinnerActivity.setSelection(entry.getActivity());
viewHolder.spinnerActivity.setOnItemSelectedListener(this);
viewHolder.spinnerHours.setSelection(entry.getHour());
viewHolder.spinnerHours.setOnItemSelectedListener(this);
viewHolder.textViewPal.setText(pal);
viewHolder.imageButtonDelete.setImageResource(R.drawable.ic_remove_row);
return convertView;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {}
private static class ViewHolder {
Spinner spinnerActivity = null;
Spinner spinnerHours = null;
TextView textViewPal = null;
ImageButton imageButtonDelete = null;
}
}
As you can see each item of my ListView
contains two Spinner
. In the onItemSelected
method i now need to get the position of the row in the ListView
where the Spinner
was used to select a value and i also need to differ between the two spinners in one row. My data model is the AMRStateListEntry
. I need to set the selected values of the spinners inside my AMRStateListEntry
.
How can i do that?