我正在使用SpinnerAdapter来显示微调框。为此,我定义了一个实现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) {

}

有人知道我必须在每种方法中编写什么代码吗?

最佳答案

感谢您的回答,但尽管如此,我还是想与您分享在搜索更多引用文献后使用的解决方案:

取而代之的是,仅在我的适配器中实现SpinnerAdapter,而是扩展BaseAdapter并实现SpinnerAdapter:

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(...)

另外,使用此解决方案,可以调用adapter.notifyDatasetChanged(),如果适配器仅实现SpinnerAdapter而不扩展BaseAdapter则不那么容易。

关于android - 如何正确覆盖SpinnerAdapter的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3072147/

10-10 06:18