package gueei.binding.viewAttributes.adapterView; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import gueei.binding.Binder; import gueei.binding.ViewAttribute; import gueei.binding.listeners.OnItemSelectedListenerMulticast; /** * The Selected Position of Adapter View * similar to calling AdapterView.setSelection() and changes on AdapterView.OnItemSelectedListener * * @name selectedPosition * @widget ListView * @type Integer * @accepts Integer * @category list * @related * * @author andy */ public class SelectedPositionViewAttribute extends ViewAttribute<AdapterView<?>, Integer> implements OnItemSelectedListener { public SelectedPositionViewAttribute(AdapterView<?> view) { super(Integer.class, view, "selectedPosition"); Binder.getMulticastListenerForView(view, OnItemSelectedListenerMulticast.class).register(this); } @Override protected void doSetAttributeValue(Object newValue) { if(getView()==null) return; if (!(newValue instanceof Integer)) return; getView().setSelection((Integer)newValue); mValue = (Integer)newValue; } @Override public Integer get() { return mValue; } private int mValue = 0; public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { mValue = pos; this.notifyChanged(); } public void onNothingSelected(AdapterView<?> arg0) { mValue = -1; this.notifyChanged(); } }