2023-09-12 23:18:47 +02:00
|
|
|
package android.widget;
|
|
|
|
|
|
|
|
|
|
import android.content.Context;
|
2024-03-20 22:14:34 +01:00
|
|
|
import android.database.DataSetObserver;
|
2023-09-12 23:18:47 +02:00
|
|
|
import android.util.AttributeSet;
|
|
|
|
|
|
|
|
|
|
public abstract class AbsSpinner extends AdapterView {
|
2024-03-20 22:14:34 +01:00
|
|
|
private Observer observer = new Observer();
|
2023-09-12 23:18:47 +02:00
|
|
|
|
|
|
|
|
public AbsSpinner(Context context) {
|
|
|
|
|
super(context);
|
2024-03-20 22:14:34 +01:00
|
|
|
haveCustomMeasure = false;
|
2023-09-12 23:18:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public AbsSpinner(Context context, AttributeSet attributeSet) {
|
|
|
|
|
super(context, attributeSet);
|
2024-03-20 22:14:34 +01:00
|
|
|
haveCustomMeasure = false;
|
2023-09-12 23:18:47 +02:00
|
|
|
}
|
|
|
|
|
|
2024-03-20 22:14:34 +01:00
|
|
|
@Override
|
|
|
|
|
protected native long native_constructor(Context context, AttributeSet attrs);
|
|
|
|
|
protected native void native_setAdapter(long widget, SpinnerAdapter adapter);
|
|
|
|
|
|
|
|
|
|
public void setAdapter(SpinnerAdapter adapter) {
|
|
|
|
|
SpinnerAdapter oldAdapter = getAdapter();
|
|
|
|
|
if (oldAdapter != null)
|
|
|
|
|
oldAdapter.unregisterDataSetObserver(observer);
|
|
|
|
|
super.setAdapter(adapter);
|
|
|
|
|
if (adapter != null)
|
|
|
|
|
adapter.registerDataSetObserver(observer);
|
|
|
|
|
native_setAdapter(this.widget, adapter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public SpinnerAdapter getAdapter() {
|
|
|
|
|
return (SpinnerAdapter) super.getAdapter();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public native void setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener);
|
|
|
|
|
|
|
|
|
|
private class Observer extends DataSetObserver {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onChanged() {
|
|
|
|
|
AbsSpinner.this.native_setAdapter(widget, getAdapter());
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void onInvalidated() {
|
|
|
|
|
AbsSpinner.this.native_setAdapter(widget, getAdapter());
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-09-12 23:18:47 +02:00
|
|
|
}
|