package com.quemb.qmbform.view;
import com.quemb.qmbform.R;
import com.quemb.qmbform.adapter.FormOptionsObjectAdapter;
import com.quemb.qmbform.descriptor.FormOptionsObject;
import com.quemb.qmbform.descriptor.RowDescriptor;
import com.quemb.qmbform.descriptor.Value;
import android.app.AlertDialog;
import android.content.Context;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.List;
/**
* Created by tonimoeckel on 15.07.14.
*/
public class FormSpinnerFieldCell extends FormTitleFieldCell {
private Spinner mSpinner;
private ArrayList<Object> mValues;
public FormSpinnerFieldCell(Context context,
RowDescriptor rowDescriptor) {
super(context, rowDescriptor);
}
@Override
protected void init() {
super.init();
mSpinner = (Spinner) findViewById(R.id.spinner);
}
@Override
protected int getResource() {
return R.layout.spinner_field_cell;
}
@Override
protected void update() {
super.update();
List<FormOptionsObject> selectorOptions = getRowDescriptor().getSelectorOptions();
if (selectorOptions.size() > 0) {
FormOptionsObjectAdapter adapter = new FormOptionsObjectAdapter(getContext(),
android.R.layout.simple_spinner_item,
android.R.layout.simple_spinner_dropdown_item,
selectorOptions);
mSpinner.setAdapter(adapter);
Object value = getRowDescriptor().getValueData();
if (value != null) {
mSpinner.setSelection(FormOptionsObject.indexOfFormOptionsObjectFromArrayWithValue(value, selectorOptions));
} else {
mSpinner.setSelection(-1);
}
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(R.string.title_no_entries);
builder.setMessage(R.string.msg_no_entries);
AlertDialog dialog = builder.create();
dialog.show();
}
mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
FormOptionsObject selectedOption = (FormOptionsObject) mSpinner.getAdapter().getItem(position);
onValueChanged(new Value(selectedOption.getValue()));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@Override
public void onCellSelected() {
super.onCellSelected();
}
}