android - SpinnerAdapter 中 getView 和 getDropDownView 的区别

标签 android android-arrayadapter android-spinner baseadapter

当你实现 SpinnerAdapter 时,你会得到 getDropDownView ,它与需要扩展 BaseAdapter 时的 getView 有何不同。

最佳答案

如果我们看下面的代码,我们在 getView 和 getDropDownView 中有 name 和 value 数组。

private void initView() {
    SpinnerDropDownAdapter sddadapter = new SpinnerDropDownAdapter(this);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, sddadapter.name);

    Spinner getViewSP = (Spinner) findViewById(R.id.getview_sp);
    getViewSP.setAdapter(adapter);

    Spinner getViewWDropDownSP = (Spinner) findViewById(R.id.getview_w_drop_down_sp);
    getViewWDropDownSP.setAdapter(sddadapter);
}

static class SpinnerDropDownAdapter extends BaseAdapter implements
        SpinnerAdapter {
    Context context;

    SpinnerDropDownAdapter(Context ctx) {
        context = ctx;
    }

    String[] name = { " One", " Two", " Three", " Four", " Five", " Six",
            " Seven", " Eight" };
    String[] value = { " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8" };

    @Override
    public int getCount() {
        return name.length;
    }

    @Override
    public String getItem(int pos) {
        // TODO Auto-generated method stub
        return name[pos];
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView text = new TextView(context);
        text.setTextColor(Color.BLACK);
        text.setText(name[position]);
        return text;
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        TextView text = new TextView(context);
        text.setTextColor(Color.BLACK);
        text.setText(value[position]);
        return text;
    }
}

如果没有实现getDropDownView方法,下拉框会从getView中获取 View 。因此,它只会显示名称。

getView

当getView和getDropDownView都实现时,前者获取name,后者获取value,静止的spinner将从中获取name getview 和下拉弹出框将获得 valuegetView and getDropDownView

关于android - SpinnerAdapter 中 getView 和 getDropDownView 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13433874/

相关文章:

android - com.android.build.api.transform.TransformException : java. util.zip.ZipException

Android 在 webview 中屏蔽广告

java - setOnItemClickListener 不适用于 ArrayAdapter<ImageView>

android - 从 Android ListView/ArrayAdapter 中删除项目在文本过滤后不起作用

android - 编辑列表查看内容 - Android

android - 如何在微调器中添加提示

java - 哪里可以在 Fragment 中创建 Android Spinner?

android - 确定 Android 中其他模块的 buildType

java - Android Spinner - 防止刷新后关闭

Android:蓝牙获取端口号失败