首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SpinnerAdapter中getView与getDropDownView的区别

SpinnerAdapter中getView与getDropDownView的区别
EN

Stack Overflow用户
提问于 2012-11-18 03:13:01
回答 2查看 32.8K关注 0票数 67

当你实现SpinnerAdapter时,你得到了getDropDownView,当你需要扩展BaseAdapter时,它与你拥有的getView有什么不同。

EN

回答 2

Stack Overflow用户

发布于 2015-09-17 21:20:48

getViewgetDropDownView可以显示不同的布局。

我创建了一个微调器,并使用class ImageTextAdapter extends ArrayAdapter<String>作为适配器。我重写了getView,这样它就可以同时显示ImageViewTextView。但是,我不会重写getDropDownView

这是按下微调器之前的屏幕截图

在按下旋转器之后。

我用下面的代码初始化微调器。

代码语言:javascript
复制
String[] spinnerTexts = {"Tanzania", "Thailand"};
int[] spinnerImages = {R.drawable.tanzania, R.drawable.thailand};

ArrayAdapter<String> adapter = new ImageTextAdapter(this, spinnerTexts, spinnerImages);

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);

这是ImageTextAdapter.java

代码语言:javascript
复制
public class ImageTextAdapter extends ArrayAdapter<String> {

    int[] images;

    public ImageTextAdapter(Context ctx, String[] texts, int[] images) {
        super(ctx, android.R.layout.simple_spinner_item, texts);
        this.images = images;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = getLayoutInflater().inflate(R.layout.row, parent, false);

        TextView textView = (TextView) row.findViewById(R.id.textView);
        textView.setText(getItem(position));

        ImageView imageView = (ImageView) row.findViewById(R.id.imageView);
        imageView.setImageResource(images[position]);

        return row;
    }
}
票数 7
EN

Stack Overflow用户

发布于 2017-03-02 17:32:31

我们可以这样使用SpinnerAdapter:

代码语言:javascript
复制
public class FolderSpinnerAdpater extends BaseAdapter implements SpinnerAdapter {
@Override
public int getCount() {
    return 0;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    return null;
}
}

在BaseAdapter.java中

代码语言:javascript
复制
public View getDropDownView(int position, View convertView, ViewGroup parent) {
    return getView(position, convertView, parent);
}

覆盖getView()getDropDownView(),返回不同的视图,你会发现不同之处。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13433874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档