2 baby bonnie Baby_Bonnie 于 2012.10.29 10:59 提问

正确重写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) {

}

大家知道在这些方法中我要加什么代码呢?

3个回答

clcurie_11
clcurie_11   2012.10.29 14:37
已采纳

在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(...)方法。

ueryueryuery
ueryueryuery   2012.10.29 13:54

主要重写负责生成view的两个方法:
getDropDownView() //返回下拉列表项
getView() //返回选中项

其它的都是一些次要的方法,如:registerDataSetObserver()是注册一个对下拉内容数据的observer,有兴趣可以去查下API看。

hxn_217
hxn_217   2012.10.29 15:01

如果Adapter只是实现SpinnerAdapter,而不继承BaseAdapter时,可以调用adapter.notifyDatasetChanged()。

Csdn user default icon
上传中...
上传图片
插入图片