问题描述
- 正确重写SpinnerAdapter方法
-
我使用SpinnerAdapter显示一个Spinner。所以我定义了一个类继承SpinnerAdapter。但是我不知道如何重新SpinnerAdapter的一些方法。@Override public View getDropDownView(int position, View arg1, ViewGroup arg2) { } @Override public int getItemViewType(int arg0) { } @Override public boolean hasStableIds() { } @Override public void registerDataSetObserver(DataSetObserver arg0) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { }
大家知道在这些方法中我要加什么代码呢?
解决方案
在Adapter中实现SpinnerAdapter,继承BaseAdapter类
private class ListAdapter extends BaseAdapter implements SpinnerAdapter {
@Override
public int getCount() {
return allLists.size();
}
@Override
public Object getItem(int position) {
return allLists.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
TextView text = new TextView(lexs);
text.setText(allLists.get(position).getName());
return text;
}
}
然后它不需要重写所有的像isEmpty(), registerDataObserver()这样的方法,但是可以重写getDropDownView(...)方法。
解决方案二:
主要重写负责生成view的两个方法:
getDropDownView() //返回下拉列表项
getView() //返回选中项
其它的都是一些次要的方法,如:registerDataSetObserver()是注册一个对下拉内容数据的observer,有兴趣可以去查下API看。
解决方案三:
如果Adapter只是实现SpinnerAdapter,而不继承BaseAdapter时,可以调用adapter.notifyDatasetChanged()。
时间: 2024-09-16 04:22:24